Module: Rebels::Values::With

Included in:
Request, Response
Defined in:
lib/rebels/values/with.rb

Instance Method Summary collapse

Instance Method Details

#attributesObject



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