class Pluggaloid::Collection
Attributes
values[R]
Public Class Methods
new(event, *args)
click to toggle source
# File lib/pluggaloid/collection.rb, line 7 def initialize(event, *args) @event = event args[event.collect_index] = nil @args = args.freeze @spec = argument_hash(args) @values = [].freeze end
Public Instance Methods
add(*v)
click to toggle source
# File lib/pluggaloid/collection.rb, line 15 def add(*v) rewind do |primitive| primitive + v end end
Also aliased as: <<
argument_hash_same?(specs)
click to toggle source
# File lib/pluggaloid/collection.rb, line 45 def argument_hash_same?(specs) @spec == argument_hash(specs) end
delete(*v)
click to toggle source
# File lib/pluggaloid/collection.rb, line 22 def delete(*v) rewind do |primitive| primitive - v end end
rewind(&block)
click to toggle source
# File lib/pluggaloid/collection.rb, line 28 def rewind(&block) new_values = block.(@values.dup) added, deleted = new_values - @values, @values - new_values @values = new_values.freeze unless added.empty? args = @args.dup args[@event.collect_index] = added @event.collection_add_event.call(*args) end unless deleted.empty? args = @args.dup args[@event.collect_index] = deleted @event.collection_delete_event.call(*args) end self end
Private Instance Methods
argument_hash(specs)
click to toggle source
# File lib/pluggaloid/collection.rb, line 51 def argument_hash(specs) @event.argument_hash(specs, @event.collect_index) end