nulogy/Gorgon

View on GitHub
lib/gorgon/core_ext/hash/deep_merge.rb

Summary

Maintainability
A
0 mins
Test Coverage
# Algorithm from 'activesupport/core_ext/hash/deep_merge'

class Hash
  def deep_merge(other_hash)
    dup.deep_merge!(other_hash)
  end

  def deep_merge!(other_hash)
    other_hash.each_pair do |current_key, other_value|
      this_value = self[current_key]

      self[current_key] = if this_value.is_a?(Hash) && other_value.is_a?(Hash)
        this_value.deep_merge(other_value)
      else
        other_value
      end
    end

    self
  end
end