Module: ActiveSerialize::ToH

Defined in:
lib/active_serialize.rb

Instance Method Summary collapse

Instance Method Details

#to_h(*groups, rmv: [ ], add: [ ], recursive: [ ], plucked: { }, merge: { }) ⇒ Object Also known as: to_ha



34
35
36
37
38
39
40
41
42
43
# File 'lib/active_serialize.rb', line 34

def to_h(*groups, rmv: [ ], add: [ ], recursive: [ ], plucked: { }, merge: { })
  tran_key  = ->(key) { (_active_serialize[:map][key] || key).to_s }
  recursion = (_active_serialize[:recursive] + recursive).map { |k| [ k, public_send(k)&.to_ha ] }.to_h

  KeyFormatter.(_active_serialize[:key_format],
      active_serialize_keys(*groups, rmv: rmv, add: add)
          .map{ |key| [ tran_key.(key), public_send(key) ] }.to_h
          .merge(plucked.merge(recursion).merge(merge).transform_keys(&tran_key))
  )
end