Module: ActiveSupport::CoreExtensions::Hash::DeepMerge
- Included in:
- Hash
- Defined in:
- lib/active_support/core_ext/hash/deep_merge.rb
Overview
Allows for deep merging
Instance Method Summary collapse
-
#deep_merge(other_hash) ⇒ Object
Returns a new hash with
self
andother_hash
merged recursively. -
#deep_merge!(other_hash) ⇒ Object
Returns a new hash with
self
andother_hash
merged recursively.
Instance Method Details
#deep_merge(other_hash) ⇒ Object
Returns a new hash with self
and other_hash
merged recursively.
7 8 9 10 11 12 13 |
# File 'lib/active_support/core_ext/hash/deep_merge.rb', line 7 def deep_merge(other_hash) self.merge(other_hash) do |key, oldval, newval| oldval = oldval.to_hash if oldval.respond_to?(:to_hash) newval = newval.to_hash if newval.respond_to?(:to_hash) oldval.class.to_s == 'Hash' && newval.class.to_s == 'Hash' ? oldval.deep_merge(newval) : newval end end |
#deep_merge!(other_hash) ⇒ Object
Returns a new hash with self
and other_hash
merged recursively. Modifies the receiver in place.
17 18 19 |
# File 'lib/active_support/core_ext/hash/deep_merge.rb', line 17 def deep_merge!(other_hash) replace(deep_merge(other_hash)) end |