Class: Stackup::Differ

Inherits:
Object
  • Object
show all
Includes:
Utils
Defined in:
lib/stackup/differ.rb

Overview

Generates diffs of data.

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Utils

#normalize_data

Constructor Details

#initialize(diff_style = :color, &data_formatter) ⇒ Differ

Returns a new instance of Differ.



11
12
13
14
# File 'lib/stackup/differ.rb', line 11

def initialize(diff_style = :color, &data_formatter)
  @diff_style = diff_style.to_sym
  @data_formatter = data_formatter || YAML.method(:dump)
end

Instance Attribute Details

#diff_styleObject (readonly)

Returns the value of attribute diff_style.



16
17
18
# File 'lib/stackup/differ.rb', line 16

def diff_style
  @diff_style
end

Instance Method Details

#diff(existing_data, pending_data, context_lines = nil) ⇒ Object



20
21
22
23
24
25
# File 'lib/stackup/differ.rb', line 20

def diff(existing_data, pending_data, context_lines = nil)
  existing = format(normalize_data(existing_data)) + "\n"
  pending = format(normalize_data(pending_data)) + "\n"
  diff = Diffy::Diff.new(existing, pending, :context => context_lines).to_s(diff_style)
  diff unless diff =~ /\A\s*\Z/
end