class Unified::Diff

Attributes

chunks[R]
modified_filename[R]
modified_revision[R]
original_filename[R]
original_revision[R]

Public Class Methods

new(attrs={}) click to toggle source
# File lib/unified/diff.rb, line 11
def initialize(attrs={})
  @original_filename = attrs[:original_filename]
  @modified_filename = attrs[:modified_filename]
  @original_revision = attrs[:original_revision]
  @modified_revision = attrs[:modified_revision]
  @chunks = attrs[:chunks]
end
parse!(content) click to toggle source
# File lib/unified/diff.rb, line 19
def self.parse!(content)
  begin
    Unified::Transformer.new.apply(Unified::Parser.new.parse(content))
  rescue StandardError => e
    raise Unified::ParseError, e.message
  end
end

Public Instance Methods

each_chunk() { |chunk| ... } click to toggle source
# File lib/unified/diff.rb, line 67
def each_chunk
  @chunks.each do |chunk|
    yield chunk
  end
end
header() click to toggle source
# File lib/unified/diff.rb, line 55
def header
  "--- #{@original_filename}\t#{@original_revision}\n+++ #{modified_filename}\t#{@modified_revision}"
end
number_of_added_lines() click to toggle source
# File lib/unified/diff.rb, line 31
def number_of_added_lines
  @number_of_added_lines ||= @chunks.inject(0) {|total, chunk| total + chunk.number_of_added_lines}
end
number_of_deleted_lines() click to toggle source
# File lib/unified/diff.rb, line 35
def number_of_deleted_lines
  @number_of_deleted_lines ||= @chunks.inject(0) {|total, chunk| total + chunk.number_of_deleted_lines}
end
number_of_modified_lines() click to toggle source
# File lib/unified/diff.rb, line 43
def number_of_modified_lines
  @number_of_modified_lines ||= number_of_deleted_lines + number_of_added_lines
end
number_of_unchanged_lines() click to toggle source
# File lib/unified/diff.rb, line 39
def number_of_unchanged_lines
  @number_of_unchanged_lines ||= @chunks.inject(0) {|total, chunk| total + chunk.number_of_unchanged_lines}
end
proportion_of_added_lines() click to toggle source
# File lib/unified/diff.rb, line 51
def proportion_of_added_lines
  @proportion_of_added_lines ||= 100 - proportion_of_deleted_lines
end
proportion_of_deleted_lines() click to toggle source
# File lib/unified/diff.rb, line 47
def proportion_of_deleted_lines
  @proportion_of_deleted_lines ||= ((100.0 * number_of_deleted_lines / number_of_modified_lines)).round
end
to_s() click to toggle source
# File lib/unified/diff.rb, line 59
def to_s
  str = [header]
  @chunks.each do |chunk|
    str << chunk.to_s
  end
  str.join("\n")
end
total_number_of_lines() click to toggle source
# File lib/unified/diff.rb, line 27
def total_number_of_lines
  @total_number_of_lines ||= number_of_added_lines + number_of_deleted_lines + number_of_unchanged_lines
end