Module: Mycrm::CoreExt::Hash
- Defined in:
- lib/mycrm/core_ext/hash.rb
Instance Method Summary collapse
- #depp_merge(newhash) ⇒ Object
- #modify_keys_deep(method = :to_sym) ⇒ Object
- #stringify_keys_deep! ⇒ Object
- #symbolize_keys_deep! ⇒ Object
Instance Method Details
#depp_merge(newhash) ⇒ Object
18 19 20 21 22 23 24 25 |
# File 'lib/mycrm/core_ext/hash.rb', line 18 def depp_merge(newhash) return self.dup unless newhash # merger = -> (key, oldval, newval) { oldval.is_a? Hash ? oldval.recursive_merge(newval) : newval } # not working :( new_hash = (newhash.keys - keys).each_with_object({}) { |k, nh| nh[k] = newhash[k] } self.each_with_object(new_hash) do |(key, value), nh| nh[key] = value.kind_of?(Hash) ? value.depp_merge(newhash[key]) : (newhash[key] || value) end end |
#modify_keys_deep(method = :to_sym) ⇒ Object
12 13 14 15 16 |
# File 'lib/mycrm/core_ext/hash.rb', line 12 def modify_keys_deep(method = :to_sym ) self.each_with_object({}) do |(key, value), copy| copy[key.send(method)] = value.kind_of?(Hash) ? value.modify_keys_deep(method) : value end end |
#stringify_keys_deep! ⇒ Object
8 9 10 |
# File 'lib/mycrm/core_ext/hash.rb', line 8 def stringify_keys_deep! self.replace modify_keys_deep(:to_s) end |
#symbolize_keys_deep! ⇒ Object
4 5 6 |
# File 'lib/mycrm/core_ext/hash.rb', line 4 def symbolize_keys_deep! self.replace modify_keys_deep(:to_sym) end |