Class: Hash

Inherits:
Object
  • Object
show all
Defined in:
lib/metanorma/standoc/merge_bibitems.rb

Instance Method Summary collapse

Instance Method Details

#deep_merge(second) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/metanorma/standoc/merge_bibitems.rb', line 17

def deep_merge(second)
  merger = proc { |_, v1, v2|
    if ::Hash === v1 && ::Hash === v2
      v1.merge(v2, &merger)
    elsif ::Array === v1 && ::Array === v2
      v2 # overwrite old with new
    elsif [:undefined].include?(v2)
      v1
    else
      v2
    end
  }
  merge(second.to_h, &merger)
end