module Rebels::Values::With

Public Instance Methods

attributes() click to toggle source
# File lib/rebels/values/with.rb, line 2
def attributes
  keys = self.class.superclass.const_get(:VALUE_ATTRS)
  keys.reduce({}){|m,e| m.merge(e => self.send(e))}
end
with(deltas) click to toggle source
# File lib/rebels/values/with.rb, line 6
def with(deltas)
  keys = self.class.superclass.const_get(:VALUE_ATTRS)
  raise "bad keys #{(deltas.keys - keys)}" if !(deltas.keys - keys).empty?
  map = Hash[keys.zip(values)]
  keys.each do |k|
    map[k] = deltas[k] if deltas.has_key?(k)
  end
  self.class.new(*map.values)
end