Sha256: 14f6d618eef67112834b8071253d5c689e3cc5cb6634ab5c90519f086d998f07
Contents?: true
Size: 780 Bytes
Versions: 47
Compression:
Stored size: 780 Bytes
Contents
## # Various Hash extensions. # class Hash # Recursively merge +other_hash+ into +self+ and return the new hash. 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.is_a?(Hash) && newval.is_a?(Hash) ? oldval.deep_merge(newval) : newval end end # Recursively merge and replace +other_hash+ into +self+. def deep_merge!(other_hash) replace(deep_merge(other_hash)) end # accumulate existing keys from +other_hash+ into +self+. def delta_merge!(other_hash) other_hash.each do |k,v| if self.has_key?(k) self[k] += v else self[k] = v end end end end
Version data entries
47 entries across 47 versions & 2 rubygems