Module: FlixCloud::Extensions::Hash
- Defined in:
- lib/flix_cloud/extensions/hash.rb
Overview
Both methods ripped directly out of rails
Instance Method Summary collapse
- #deep_merge(other_hash) ⇒ Object
-
#deep_merge!(other_hash) ⇒ Object
Returns a new hash with
self
andother_hash
merged recursively.
Instance Method Details
#deep_merge(other_hash) ⇒ Object
5 6 7 8 9 10 11 |
# File 'lib/flix_cloud/extensions/hash.rb', line 5 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.
15 16 17 |
# File 'lib/flix_cloud/extensions/hash.rb', line 15 def deep_merge!(other_hash) replace(deep_merge(other_hash)) end |