module Mycrm::CoreExt::Hash
Public Instance Methods
depp_merge(newhash)
click to toggle source
# 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 )
click to toggle source
# 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!()
click to toggle source
# File lib/mycrm/core_ext/hash.rb, line 8 def stringify_keys_deep! self.replace modify_keys_deep(:to_s) end
symbolize_keys_deep!()
click to toggle source
# File lib/mycrm/core_ext/hash.rb, line 4 def symbolize_keys_deep! self.replace modify_keys_deep(:to_sym) end