Sha256: 7a0d65b45dfe8d5439348a5a16fb84eb42f9932e54ae7af0156105517fc4910b

Contents?: true

Size: 449 Bytes

Versions: 4

Compression:

Stored size: 449 Bytes

Contents

# rubocop:disable Style/ClassAndModuleChildren
class ::Hash
  def deep_merge!(second)
    merger = proc do |_, v1, v2|
      if v1.is_a?(Hash) && v2.is_a?(Hash)
        v1.merge(v2, &merger)
      elsif v1.is_a?(Array) && v2.is_a?(Array)
        v1 | v2
      elsif [:undefined, nil, :nil].include?(v2)
        v1
      else
        v2
      end
    end

    self.merge!(second.to_h, &merger)
  end
end
# rubocop:enable Style/ClassAndModuleChildren

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
unotifier-0.5.0 lib/hash.rb
unotifier-0.4.1 lib/hash.rb
unotifier-0.4.0 lib/hash.rb
unotifier-0.3.0 lib/hash.rb