class Enumerize::Set

Attributes

values[R]

Public Class Methods

new(obj, attr, values) click to toggle source
# File lib/enumerize/set.rb, line 10
def initialize(obj, attr, values)
  @obj    = obj
  @attr   = attr
  @values = []

  if values.respond_to?(:each)
    values.each do |input|
      value = @attr.find_value(input)

      if value && !@values.include?(value)
        @values << value
      end
    end
  end
end

Public Instance Methods

<<(value) click to toggle source
# File lib/enumerize/set.rb, line 26
def <<(value)
  @values << value
  mutate!
end
Also aliased as: push
==(other) click to toggle source
# File lib/enumerize/set.rb, line 41
def ==(other)
  other.size == size && other.all? { |v| @values.include?(@attr.find_value(v)) }
end
Also aliased as: eql?
delete(value) click to toggle source
# File lib/enumerize/set.rb, line 51
def delete(value)
  @values.delete(@attr.find_value(value))
  mutate!
end
encode_with(coder) click to toggle source
# File lib/enumerize/set.rb, line 60
def encode_with(coder)
  coder.represent_object(Array, @values)
end
eql?(other)
Alias for: ==
include?(value) click to toggle source
# File lib/enumerize/set.rb, line 47
def include?(value)
  @values.include?(@attr.find_value(value))
end
inspect() click to toggle source
# File lib/enumerize/set.rb, line 56
def inspect
  "#<Enumerize::Set {#{join(', ')}}>"
end
push(value)
Alias for: <<
to_ary() click to toggle source
# File lib/enumerize/set.rb, line 35
def to_ary
  @values.to_a
end

Private Instance Methods

mutate!() click to toggle source
# File lib/enumerize/set.rb, line 70
def mutate!
  @values = @obj.public_send("#{@attr.name}=", @values).values
end
predicate_call(value) click to toggle source
# File lib/enumerize/set.rb, line 66
def predicate_call(value)
  include?(value)
end