Class: Mutant::Diff

Inherits:
Object
  • Object
show all
Includes:
Adamantium::Flat
Defined in:
lib/mutant/diff.rb

Overview

Class to create diffs from source code

Constant Summary collapse

ADDITION =
'+'.freeze
DELETION =
'-'.freeze
NEWLINE =
"\n".freeze

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.build(old, new) ⇒ Diff

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Return new object

Parameters:

  • old (String)
  • new (String)

Returns:


54
55
56
# File 'lib/mutant/diff.rb', line 54

def self.build(old, new)
  new(lines(old), lines(new))
end

Instance Method Details

#colorized_diffString?

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Return colorized source diff

Returns:

  • (String)

    if there is a diff

  • (nil)

    otherwise


39
40
41
42
# File 'lib/mutant/diff.rb', line 39

def colorized_diff
  return unless diff
  diff.lines.map(&self.class.method(:colorize_line)).join
end

#diffString?

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Return source diff

Returns:

  • (String)

    if there is exactly one diff

  • (nil)

    otherwise


20
21
22
23
24
25
26
# File 'lib/mutant/diff.rb', line 20

def diff
  return if diffs.empty?

  minimized_hunks.map do |hunk|
    hunk.diff(:unified) << NEWLINE
  end.join
end