Method: PaperTrailHashDiff#diff

Defined in:
lib/paper_trail_hashdiff.rb

#diff(changes) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/paper_trail_hashdiff.rb', line 12

def diff(changes)
  diff_changes = {}
  changes.each do |field, value_changes|
    if (
      !only_objects || (
        value_changes[0] && value_changes[1] &&
        (value_changes[0].is_a?(Hash) || value_changes[0].is_a?(Array))
      )
    )
      diff_changes[field] = Hashdiff.diff(value_changes[0], value_changes[1], array_path: true)
    else
      diff_changes[field] = value_changes
    end
  end
  diff_changes
end