class GitDiffMap
Originally from rubocop-definition_validator
Encoding of `line` is changed: `line` in added line is the number of line in old file (not changed). `line` in deleted line is the number of line in new file (changed).
Originally from rubocop-definition_validator
This class override `changed_lines` method. The original method retuns only added lines. However we want added and removed lines.
Constants
- VERSION
Attributes
patch[R]
Public Class Methods
new(patch:)
click to toggle source
# File lib/git_diff_map.rb, line 8 def initialize(patch:) @patch = patch end
parse(diff)
click to toggle source
# File lib/git_diff_map.rb, line 12 def self.parse(diff) patch = GitDiffMap::Patch.new(GitDiffParser::Patch.new(diff)) self.new(patch: patch) end
Public Instance Methods
translate_new_lines_to_original_lines(lines)
click to toggle source
# File lib/git_diff_map.rb, line 21 def translate_new_lines_to_original_lines(lines) results = [] all_changes = patch.changed_lines.dup offset = 0 lines.each do |new_line| while true if all_changes.empty? results << new_line + offset break else change = all_changes.first case change.type when '-' if new_line + offset < change.number results << new_line + offset break end offset += 1 when '+' if new_line < change.number results << new_line + offset break end if new_line == change.number results << nil break end offset -= 1 end all_changes.shift end end end results end
translate_new_to_original(new_line)
click to toggle source
# File lib/git_diff_map.rb, line 17 def translate_new_to_original(new_line) translate_new_lines_to_original_lines([new_line]).first end
translate_original_lines_to_new_lines(lines)
click to toggle source
# File lib/git_diff_map.rb, line 69 def translate_original_lines_to_new_lines(lines) results = [] all_changes = patch.changed_lines.dup offset = 0 lines.each do |original_line| while true if all_changes.empty? results << original_line + offset break else change = all_changes.first case change.type when '+' if original_line + offset < change.number results << original_line + offset break end offset += 1 when '-' if original_line < change.number results << original_line + offset break end if original_line == change.number results << nil break end offset -= 1 end all_changes.shift end end end results end
translate_original_to_new(original_line)
click to toggle source
# File lib/git_diff_map.rb, line 65 def translate_original_to_new(original_line) translate_original_lines_to_new_lines([original_line]).first end