class SequelMapper::CollectionMutabilityProxy

Attributes

added_nodes[R]
collection[R]
deleted_nodes[R]

Public Class Methods

new(collection) click to toggle source
# File lib/sequel_mapper/collection_mutability_proxy.rb, line 8
def initialize(collection)
  @collection = collection
  @added_nodes = []
  @deleted_nodes = []
end

Public Instance Methods

delete(node) click to toggle source
# File lib/sequel_mapper/collection_mutability_proxy.rb, line 38
def delete(node)
  @deleted_nodes.push(node)
  self
end
each(&block) click to toggle source
# File lib/sequel_mapper/collection_mutability_proxy.rb, line 29
def each(&block)
  if block
    enum.each(&block)
    self
  else
    enum
  end
end
each_deleted(&block) click to toggle source
# File lib/sequel_mapper/collection_mutability_proxy.rb, line 24
def each_deleted(&block)
  @deleted_nodes.each(&block)
end
each_loaded(&block) click to toggle source
# File lib/sequel_mapper/collection_mutability_proxy.rb, line 20
def each_loaded(&block)
  loaded_enum.each(&block)
end
push(node) click to toggle source
# File lib/sequel_mapper/collection_mutability_proxy.rb, line 43
def push(node)
  @added_nodes.push(node)
end

Private Instance Methods

deleted?(node) click to toggle source
# File lib/sequel_mapper/collection_mutability_proxy.rb, line 73
def deleted?(node)
  @deleted_nodes.include?(node)
end
enum() click to toggle source
# File lib/sequel_mapper/collection_mutability_proxy.rb, line 61
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
loaded_enum() click to toggle source
# File lib/sequel_mapper/collection_mutability_proxy.rb, line 49
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