class Policial::Patch

Public: a chunk of changed code in a commit file.

Constants

MODIFIED_LINE
NOT_REMOVED_LINE
RANGE_INFORMATION_LINE

Public Class Methods

new(body) click to toggle source
# File lib/policial/patch.rb, line 10
def initialize(body)
  @body = body || ''
end

Public Instance Methods

changed_lines() click to toggle source
# File lib/policial/patch.rb, line 14
def changed_lines
  line_number = 0

  @body.lines.each_with_index.with_object([]) do |(line, patch_pos), lines|
    line_number =
      parse_line(line, line_number, patch_pos, lines) || line_number
  end
end

Private Instance Methods

parse_line(line_content, line_number, patch_position, lines) click to toggle source
# File lib/policial/patch.rb, line 25
def parse_line(line_content, line_number, patch_position, lines)
  case line_content
  when RANGE_INFORMATION_LINE
    Regexp.last_match[:line_number].to_i
  when MODIFIED_LINE
    lines << Line.new(line_number, line_content, patch_position)
    line_number + 1
  when NOT_REMOVED_LINE
    line_number + 1
  end
end