Class: Hash
- Inherits:
-
Object
- Object
- Hash
- Defined in:
- lib/biopsy/base_extensions.rb
Overview
File
Instance Method Summary collapse
-
#deep_merge(other_hash) ⇒ Object
recursively merge two hashes.
-
#deep_symbolize ⇒ Object
recursively convert all keys to symbols.
Instance Method Details
#deep_merge(other_hash) ⇒ Object
recursively merge two hashes
42 43 44 45 46 47 48 |
# File 'lib/biopsy/base_extensions.rb', line 42 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_symbolize ⇒ Object
recursively convert all keys to symbols
31 32 33 34 35 36 37 38 39 |
# File 'lib/biopsy/base_extensions.rb', line 31 def deep_symbolize target = dup target.inject({}) do |memo, (key, value)| value = value.deep_symbolize if value.is_a?(Hash) value = value.map{ |x| x.is_a?(Hash) ? x.deep_symbolize : x } if value.is_a?(Array) memo[(key.to_sym rescue key) || key] = value memo end end |