Sha256: e224bcc203f6834fc482e148cb2d4c172e751600125475742071664e1362fa64

Contents?: true

Size: 556 Bytes

Versions: 6

Compression:

Stored size: 556 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

end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
madvertise-ext-0.2.2 lib/madvertise/ext/hash.rb
madvertise-ext-0.2.0 lib/madvertise/ext/hash.rb
madvertise-ext-0.1.3 lib/madvertise/ext/hash.rb
madvertise-ext-0.1.2 lib/madvertise/ext/hash.rb
madvertise-ext-0.1.1 lib/madvertise/ext/hash.rb
madvertise-ext-0.1.0 lib/madvertise/ext/hash.rb