class Generics::List
Public Class Methods
[](type)
click to toggle source
@param [Class, Module] type @return [Class]
# File lib/generics/collections/list.rb, line 14 def self.[](type) Class.new(self).tap do |klass| klass.instance_variable_set('@type', type) klass.define_singleton_method(:name) { klass.superclass.name } end end
new(*collection)
click to toggle source
@param [Class, Module] type
# File lib/generics/collections/list.rb, line 112 def initialize(*collection) collection.each { |value| compatible!(value) } @collection = ::Hamster::Vector.new(collection) end
type()
click to toggle source
# File lib/generics/collections/list.rb, line 21 def self.type @type end
Public Instance Methods
[](index)
click to toggle source
Enumerable
# File lib/generics/collections/list.rb, line 46 def [](index) @collection[index] end
add(value)
click to toggle source
Destructive
# File lib/generics/collections/list.rb, line 137 def add(value) compatible!(value) self.class.new(*@collection.add(value)) end
clone()
click to toggle source
Preserves frozen state and does copies singleton state @return [List]
# File lib/generics/collections/list.rb, line 125 def clone self.class.new(*@collection.clone) end
compatible!(value)
click to toggle source
# File lib/generics/collections/list.rb, line 29 def compatible!(value) fail NotSameType unless value.is_a?(self.class.type) true end
compatible?(value)
click to toggle source
# File lib/generics/collections/list.rb, line 25 def compatible?(value) value.is_a?(self.class.type) end
delete(value)
click to toggle source
# File lib/generics/collections/list.rb, line 152 def delete(value) compatible!(value) self.class.new(*@collection.delete(value)) end
delete_at(index)
click to toggle source
Methods that returns self
# File lib/generics/collections/list.rb, line 97 def delete_at(index) self.class.new(*@collection.delete_at(index)) end
dup()
click to toggle source
Does not preserve frozen state and does not copy singleton state @return [List]
# File lib/generics/collections/list.rb, line 119 def dup self.class.new(*@collection.dup) end
each() { |item| ... }
click to toggle source
# File lib/generics/collections/list.rb, line 50 def each @collection.each { |item| yield item } return self end
empty?()
click to toggle source
# File lib/generics/collections/list.rb, line 71 def empty? @collection.empty? end
insert(index, *values)
click to toggle source
# File lib/generics/collections/list.rb, line 147 def insert(index, *values) values.each { |value| compatible!(value) } self.class.new(*@collection.insert(index, *values)) end
inspect()
click to toggle source
Object
# File lib/generics/collections/list.rb, line 36 def inspect "#<#{self.class.name}[#{self.class.type}]: #{to_s}>" end
last()
click to toggle source
# File lib/generics/collections/list.rb, line 75 def last @collection.last end
length()
click to toggle source
# File lib/generics/collections/list.rb, line 67 def length @collection.length end
map()
click to toggle source
Calls superclass method
# File lib/generics/collections/list.rb, line 55 def map self.class.new(super) end
pop()
click to toggle source
# File lib/generics/collections/list.rb, line 79 def pop @collection.pop end
qdup()
click to toggle source
Quick dup; does not duplicate, just relies on immutability @return [List]
# File lib/generics/collections/list.rb, line 131 def qdup self.class.new(*@collection) end
reverse()
click to toggle source
# File lib/generics/collections/list.rb, line 83 def reverse @collection.reverse end
sample()
click to toggle source
# File lib/generics/collections/list.rb, line 87 def sample @collection.sample end
set(index, value, &block)
click to toggle source
# File lib/generics/collections/list.rb, line 142 def set(index, value, &block) compatible!(value) self.class.new(*@collection.set(index, value, &block)) end
shift()
click to toggle source
# File lib/generics/collections/list.rb, line 101 def shift self.class.new(*@collection.shift) end
size()
click to toggle source
Getters
# File lib/generics/collections/list.rb, line 63 def size @collection.size end
slice(*args)
click to toggle source
# File lib/generics/collections/list.rb, line 91 def slice(*args) @collection.slice(*args) end
to_s()
click to toggle source
# File lib/generics/collections/list.rb, line 40 def to_s @collection.to_a.to_s end
uniq(&block)
click to toggle source
# File lib/generics/collections/list.rb, line 105 def uniq(&block) self.class.new(*@collection.uniq(&block)) end
unshift(value)
click to toggle source
# File lib/generics/collections/list.rb, line 161 def unshift(value) compatible!(value) self.class.new(*@collection.unshift(value)) end