class GitDiffMap::Patch
Constants
- ADDED_LINE
- RANGE_INFORMATION_LINE
- REMOVED_LINE
Public Class Methods
new(original_patch)
click to toggle source
# File lib/git_diff_map/patch.rb, line 15 def initialize(original_patch) @body = original_patch.body @file = original_patch.file @secure_hash = original_patch.secure_hash end
Public Instance Methods
changed_lines()
click to toggle source
@return [Array<Line>] changed lines
# File lib/git_diff_map/patch.rb, line 22 def changed_lines original_line = 0 new_line = 0 lines.each_with_index.inject([]) do |lines, (content, patch_position)| case content when RANGE_INFORMATION_LINE original_line = Regexp.last_match[:original_base_line].to_i new_line = Regexp.last_match[:new_base_line].to_i when ADDED_LINE line = Line.new( content: content, number: new_line, patch_position: patch_position ) lines << line new_line += 1 when REMOVED_LINE line = Line.new( content: content, number: original_line, patch_position: patch_position ) lines << line original_line += 1 when NOT_REMOVED_LINE original_line += 1 new_line += 1 end lines end end
changed_methods()
click to toggle source
# File lib/git_diff_map/patch.rb, line 56 def changed_methods lines = changed_lines lines .group_by{|l| l.number} .select{|_, v| v.size == 2} .select{|_, v| t = v.map(&:type); t.include?('-') && t.include?('+')} .select{|_, v| v.all?{|x| x.content =~ /def\s+\w+/}} .map{|line, v| sorted = v.sort_by(&:type) begin ChangedMethod.new(sorted.first, sorted.last, line, @file) rescue Method::InvalidAST => ex warn "Warning: #{ex}\n#{ex.backtrace.join("\n")}"if RuboCop::ConfigLoader.debug end } .compact end