Module: HashRecursiveMerge
- Included in:
- Hash
- Defined in:
- lib/lib/hash.rb
Instance Method Summary collapse
- #rmerge(other_hash, concat_if_array = false) ⇒ Object
- #rmerge!(other_hash, concat_if_array = false) ⇒ Object
Instance Method Details
#rmerge(other_hash, concat_if_array = false) ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/lib/hash.rb', line 19 def rmerge(other_hash, concat_if_array = false) r = {} merge(other_hash) do |key, oldval, newval| if oldval.is_a?(Hash) r[key] = oldval.rmerge(newval, concat_if_array) elsif oldval.is_a?(Array) && newval.is_a?(Array) r[key] = concat_if_array ? oldval + newval : newval else newval end end end |
#rmerge!(other_hash, concat_if_array = false) ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/lib/hash.rb', line 32 def rmerge!(other_hash, concat_if_array = false) merge!(other_hash) do |_key, oldval, newval| if oldval.is_a?(Hash) oldval.rmerge!(newval, concat_if_array) elsif oldval.is_a?(Array) && newval.is_a?(Array) concat_if_array ? oldval + newval : newval else newval end end end |