Sha256: b6c32f5543e494cc93a1c2caff28ce53caaaecc157725e9cc3799da4fa5bebe1
Contents?: true
Size: 954 Bytes
Versions: 1
Compression:
Stored size: 954 Bytes
Contents
require "forwardable" module SequelMapper class AssociationProxy def initialize(assoc_enum) @assoc_enum = assoc_enum @added_nodes = [] @removed_nodes = [] end attr_reader :assoc_enum, :removed_nodes, :added_nodes private :assoc_enum include Enumerable def each(&block) enum = Enumerator.new do |yielder| assoc_enum.each do |element| yielder.yield(element) unless removed?(element) end @added_nodes.each do |node| yielder.yield(node) end end if block enum.each(&block) self else enum end end def remove(node) @removed_nodes.push(node) self end def push(node) @added_nodes.push(node) end def where(criteria) @assoc_enum.where(criteria) self end private def removed?(node) @removed_nodes.include?(node) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
sequel_mapper-0.0.1 | lib/sequel_mapper/association_proxy.rb |