Class: HashDeepDiff::Reports::Diff

Inherits:
Base
  • Object
show all
Defined in:
lib/hash_deep_diff/reports/diff.rb

Overview

Visual representation of the Delta as diff

Instance Attribute Summary

Attributes inherited from Base

#diff

Instance Method Summary collapse

Methods inherited from Base

#initialize, #to_s, #to_str

Constructor Details

This class inherits a constructor from HashDeepDiff::Reports::Base

Instance Method Details

#additionString (private)

visual indication of addition

Returns:

  • (String)


65
66
67
# File 'lib/hash_deep_diff/reports/diff.rb', line 65

def addition
  '+left'
end

#array_addition(delta) ⇒ Array (private)

added elemnts of array

Returns:

  • (Array)


53
54
55
# File 'lib/hash_deep_diff/reports/diff.rb', line 53

def array_addition(delta)
  delta.right - delta.left
end

#array_deletion(delta) ⇒ Array (private)

added elemnts of array

Returns:

  • (Array)


59
60
61
# File 'lib/hash_deep_diff/reports/diff.rb', line 59

def array_deletion(delta)
  delta.left - delta.right
end

#array_to_array?(delta) ⇒ Boolean (private)

returns true if original value and replacement are instances of Array TOFIX drop

Returns:

  • (Boolean)

    Bool



47
48
49
# File 'lib/hash_deep_diff/reports/diff.rb', line 47

def array_to_array?(delta)
  delta.left.instance_of?(Array) && delta.right.instance_of?(Array)
end

#deletionString (private)

visual indication of deletion

Returns:

  • (String)


71
72
73
# File 'lib/hash_deep_diff/reports/diff.rb', line 71

def deletion
  '-left'
end

#original(delta) ⇒ String (private)

line of the report with deleted value

Returns:

  • (String)


26
27
28
29
30
31
32
# File 'lib/hash_deep_diff/reports/diff.rb', line 26

def original(delta)
  return '' if delta.left == NO_VALUE
  return "#{deletion}#{delta.change_key} = #{delta.left}\n" unless array_to_array?(delta)
  return '' if array_deletion(delta).empty?

  "#{deletion}#{delta.change_key} = #{array_deletion(delta)}\n"
end

#raw_reportArray<HashDeepDiff::Delta>

additiond and deletions raw

Returns:



18
19
20
# File 'lib/hash_deep_diff/reports/diff.rb', line 18

def raw_report
  diff
end

#replacement(delta) ⇒ String (private)

line of the report with added value

Returns:

  • (String)


36
37
38
39
40
41
42
# File 'lib/hash_deep_diff/reports/diff.rb', line 36

def replacement(delta)
  return '' if delta.right == NO_VALUE
  return "#{addition}#{delta.change_key} = #{delta.right}\n" unless array_to_array?(delta)
  return '' if array_addition(delta).empty?

  "#{addition}#{delta.change_key} = #{array_addition(delta)}\n"
end

#reportString

additiond and deletions represented as diff

Returns:

  • (String)


12
13
14
# File 'lib/hash_deep_diff/reports/diff.rb', line 12

def report
  raw_report.map { |delta| original(delta) + replacement(delta) }.join
end