class Unified::Chunk

Attributes

lines[R]
modified_line_number[R]
original_line_number[R]
section_header[R]

Public Class Methods

new(attrs = {}) click to toggle source
# File lib/unified/chunk.rb, line 9
def initialize(attrs = {})
  @original_line_number = attrs[:original]
  @modified_line_number = attrs[:modified]
  @section_header = attrs[:section_header]
  @lines = attrs[:lines].map {|s| Unified::Line.new(s) }
end

Public Instance Methods

==(another) click to toggle source
# File lib/unified/chunk.rb, line 77
def ==(another)
 @modified_line_number == another.modified_line_number and
 @original_line_number == another.original_line_number and
 @section_header == another.section_header and
 @lines = another.lines
end
each_line() { |line, nil, modified_line_number| ... } click to toggle source

Iterator for lines passing |line, original_line_number, modified_line_number| as block arguments

# File lib/unified/chunk.rb, line 56
def each_line
  original_line_number = @original_line_number
  modified_line_number = @modified_line_number

  @lines.each do |line|
    if line.addition?
      yield line, nil, modified_line_number
      modified_line_number += 1
    elsif line.deletion?
      yield line, original_line_number, nil
      original_line_number += 1
    elsif line.unchanged?
      yield line, original_line_number, modified_line_number
      original_line_number += 1
      modified_line_number += 1
    else
      yield line
    end
  end
end
header() click to toggle source
# File lib/unified/chunk.rb, line 40
def header
  parts = "@@"
  parts << " -#{@original_line_number}"
  parts << ",#{number_of_original_lines}" unless number_of_original_lines == 1
  parts << " +#{@modified_line_number}"
  parts << ",#{number_of_modified_lines}" unless number_of_modified_lines == 1
  parts << " @@"
  parts << " #{@section_header}" unless @section_header.nil?
  parts
end
number_of_added_lines() click to toggle source
# File lib/unified/chunk.rb, line 24
def number_of_added_lines
  @number_of_deleted_lines ||= number_of_lines_by_type(:addition?)
end
number_of_deleted_lines() click to toggle source
# File lib/unified/chunk.rb, line 20
def number_of_deleted_lines
  @number_of_added_lines ||= number_of_lines_by_type(:deletion?)
end
number_of_modified_lines() click to toggle source
# File lib/unified/chunk.rb, line 36
def number_of_modified_lines
  @number_of_modified_lines ||= number_of_unchanged_lines + number_of_added_lines
end
number_of_original_lines() click to toggle source
# File lib/unified/chunk.rb, line 32
def number_of_original_lines
  @number_of_original_lines ||= number_of_unchanged_lines + number_of_deleted_lines
end
number_of_unchanged_lines() click to toggle source
# File lib/unified/chunk.rb, line 28
def number_of_unchanged_lines
  @number_of_unchanged_lines ||= number_of_lines_by_type(:unchanged?)
end
to_s() click to toggle source
# File lib/unified/chunk.rb, line 51
def to_s
  header + "\n" + @lines.join("\n")
end
total_number_of_lines() click to toggle source
# File lib/unified/chunk.rb, line 16
def total_number_of_lines
  @number_of_lines ||= @lines.size
end

Private Instance Methods

number_of_lines_by_type(type) click to toggle source
# File lib/unified/chunk.rb, line 86
def number_of_lines_by_type(type)
  @lines.inject(0) {|total, line| line.send(type) ? total + 1 : total}
end