Method: Hash#deep_diff

Defined in:
lib/ab_admin/core_ext/hash.rb

#deep_diff(b) ⇒ Object



41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/ab_admin/core_ext/hash.rb', line 41

def deep_diff(b)
  a = self
  (a.keys | b.keys).inject({}) do |diff, k|
    if a[k] != b[k]
      if a[k].respond_to?(:deep_diff) && b[k].respond_to?(:deep_diff)
        diff[k] = a[k].deep_diff(b[k])
      else
        diff[k] = [a[k], b[k]]
      end
    end
    diff
  end
end