class Terrestrial::CollectionMutabilityProxy
Attributes
added_nodes[R]
collection[R]
deleted_nodes[R]
Public Class Methods
new(collection)
click to toggle source
# File lib/terrestrial/collection_mutability_proxy.rb, line 10 def initialize(collection) @collection = collection @added_nodes = [] @deleted_nodes = [] end
Public Instance Methods
delete(node)
click to toggle source
# File lib/terrestrial/collection_mutability_proxy.rb, line 42 def delete(node) @deleted_nodes.push(node) self end
each(&block)
click to toggle source
# File lib/terrestrial/collection_mutability_proxy.rb, line 33 def each(&block) if block enum.each(&block) self else enum end end
each_deleted(&block)
click to toggle source
# File lib/terrestrial/collection_mutability_proxy.rb, line 25 def each_deleted(&block) @deleted_nodes.each(&block) end
each_loaded(&block)
click to toggle source
# File lib/terrestrial/collection_mutability_proxy.rb, line 21 def each_loaded(&block) loaded_enum.each(&block) end
push(node)
click to toggle source
# File lib/terrestrial/collection_mutability_proxy.rb, line 47 def push(node) force_load @added_nodes.push(node) end
to_ary()
click to toggle source
# File lib/terrestrial/collection_mutability_proxy.rb, line 29 def to_ary to_a end
Private Instance Methods
deleted?(node)
click to toggle source
# File lib/terrestrial/collection_mutability_proxy.rb, line 82 def deleted?(node) @deleted_nodes.include?(node) end
enum()
click to toggle source
# File lib/terrestrial/collection_mutability_proxy.rb, line 70 def enum Enumerator.new do |yielder| collection.each do |element| yielder.yield(element) unless deleted?(element) end added_nodes.each do |node| yielder.yield(node) end end end
force_load()
click to toggle source
# File lib/terrestrial/collection_mutability_proxy.rb, line 54 def force_load to_a end
loaded_enum()
click to toggle source
# File lib/terrestrial/collection_mutability_proxy.rb, line 58 def loaded_enum Enumerator.new do |yielder| collection.each_loaded do |element| yielder.yield(element) unless deleted?(element) end added_nodes.each do |node| yielder.yield(node) end end end