Module: Rebels::Values::With
Instance Method Summary collapse
Instance Method Details
#attributes ⇒ Object
2 3 4 5 |
# 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) ⇒ Object
6 7 8 9 10 11 12 13 14 |
# 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 |