Module: Mycrm::CoreExt::Hash

Defined in:
lib/mycrm/core_ext/hash.rb

Instance Method Summary collapse

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