Class: HashDeepDiff::Report

Inherits:
Object
  • Object
show all
Defined in:
lib/hash_deep_diff/report.rb

Overview

Visual representation of the difference between two values

Defined Under Namespace

Modules: Mode

Instance Method Summary collapse

Constructor Details

#initialize(path:, value:, mode: Mode::ADDITION) ⇒ Report (private)

Returns a new instance of Report.

Parameters:

  • path (Array)

    Keys from compared objects to fetch the compared values

  • value (Object)

    value from a compared object at @path

  • mode (Mode::ADDITION, Mode::DELETION) (defaults to: Mode::ADDITION)


40
41
42
43
44
# File 'lib/hash_deep_diff/report.rb', line 40

def initialize(path:, value:, mode: Mode::ADDITION)
  @path = path.to_ary
  @value = value
  @mode = mode
end

Instance Method Details

#diff_prefixString (private)

Visual representation of keys from compared objects needed to fetch the compared values

Returns:

  • (String)


48
49
50
51
# File 'lib/hash_deep_diff/report.rb', line 48

def diff_prefix
  # TOFIX poor naming
  @path.map { |key| "[#{key}]" }.join
end

#to_sString

A report with all additions and deletions

Returns:

  • (String)


31
32
33
# File 'lib/hash_deep_diff/report.rb', line 31

def to_s
  to_str
end

#to_strString

A report with all additions and deletions

Returns:

  • (String)


18
19
20
21
22
23
24
25
26
27
# File 'lib/hash_deep_diff/report.rb', line 18

def to_str
  if @value.respond_to?(:to_hash) && !@value.empty?
    [@mode, diff_prefix, ' = ', "{}\n"].join +
      @value.keys.map do |key|
        Report.new(path: @path + [key], value: @value[key], mode: @mode)
      end.join("\n")
  else
    [@mode, diff_prefix, ' = ', @value.to_s].join
  end
end