Class: MiniObject::IndexedList

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/mini_object/indexed_list.rb

Instance Method Summary collapse

Constructor Details

#initializeIndexedList

Returns a new instance of IndexedList.



7
8
9
# File 'lib/mini_object/indexed_list.rb', line 7

def initialize
  @store = {}
end

Instance Method Details

#<<(e) ⇒ Object Also known as: add



19
20
21
# File 'lib/mini_object/indexed_list.rb', line 19

def << e
  store[key_for(e)] = e
end

#[](key) ⇒ Object



31
32
33
# File 'lib/mini_object/indexed_list.rb', line 31

def [] key
  store.values.detect {|e| key_for(e) == key }
end

#add_new(&block) ⇒ Object



25
26
27
28
29
# File 'lib/mini_object/indexed_list.rb', line 25

def add_new &block
  e = build_new
  ForwardingDsl.run e, &block
  add e
end

#build(&block) ⇒ Object



15
16
17
# File 'lib/mini_object/indexed_list.rb', line 15

def build &block
  @build_proc = block
end

#clearObject



39
40
41
# File 'lib/mini_object/indexed_list.rb', line 39

def clear
  store.clear
end

#each(&block) ⇒ Object



35
36
37
# File 'lib/mini_object/indexed_list.rb', line 35

def each &block
  store.values.each &block
end

#empty?Boolean

Returns:

  • (Boolean)


62
63
64
# File 'lib/mini_object/indexed_list.rb', line 62

def empty?
  store.empty?
end

#initialize_dup(source) ⇒ Object



53
54
55
56
# File 'lib/mini_object/indexed_list.rb', line 53

def initialize_dup(source)
  @store = store.dup
  super
end

#key(&block) ⇒ Object



11
12
13
# File 'lib/mini_object/indexed_list.rb', line 11

def key &block
  @key_proc = block
end

#lastObject



58
59
60
# File 'lib/mini_object/indexed_list.rb', line 58

def last
  store.values.last
end

#merge(other) ⇒ Object



43
44
45
46
47
48
49
50
51
# File 'lib/mini_object/indexed_list.rb', line 43

def merge other
  new = dup

  other.each do |v|
    new << v
  end

  new
end