Module: Diff

Defined in:
lib/diff.rb,
lib/diff/hunk.rb,
lib/diff/myers.rb,
lib/diff/combined.rb

Defined Under Namespace

Classes: Combined, Edit, Hunk, Line, Myers

Constant Summary collapse

SYMBOLS =
{
  :eql => " ",
  :ins => "+",
  :del => "-"
}
HUNK_CONTEXT =
3

Class Method Summary collapse

Class Method Details

.combined(as, b) ⇒ Object



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

def self.combined(as, b)
  diffs = as.map { |a| Diff.diff(a, b) }
  Combined.new(diffs).to_a
end

.combined_hunks(as, b) ⇒ Object



43
44
45
# File 'lib/diff.rb', line 43

def self.combined_hunks(as, b)
  Hunk.filter(Diff.combined(as, b))
end

.diff(a, b) ⇒ Object



30
31
32
# File 'lib/diff.rb', line 30

def self.diff(a, b)
  Myers.diff(Diff.lines(a), Diff.lines(b))
end

.diff_hunks(a, b) ⇒ Object



34
35
36
# File 'lib/diff.rb', line 34

def self.diff_hunks(a, b)
  Hunk.filter(Diff.diff(a, b))
end

.lines(document) ⇒ Object



25
26
27
28
# File 'lib/diff.rb', line 25

def self.lines(document)
  document = document.lines if document.is_a?(String)
  document.map.with_index { |text, i| Line.new(i + 1, text) }
end