class Stash::PullRequest::Diff

Public Class Methods

new(raw_diff) click to toggle source
# File lib/stash/pull_request/diff.rb, line 4
def initialize(raw_diff)
  @raw_diff = raw_diff
end

Public Instance Methods

added_line?(file, line) click to toggle source
# File lib/stash/pull_request/diff.rb, line 8
def added_line?(file, line)
  added_lines(file).include?(line)
end

Private Instance Methods

added_lines(file) click to toggle source
# File lib/stash/pull_request/diff.rb, line 14
def added_lines(file)
  @added_lines ||= {}
  @added_lines[file] ||= begin
    file_diff(file)['hunks'].map do |hunk|
      hunk['segments'].select{ |segment| segment['type'] == 'ADDED' }.map do |segment|
        segment['lines'].map do |line|
          line['destination']
        end
      end
    end.flatten
  end
end
file_diff(file) click to toggle source
# File lib/stash/pull_request/diff.rb, line 27
def file_diff(file)
  @raw_diff['diffs'].detect{ |diff| diff['destination'] && diff['destination']['toString'] == file } || {'hunks' => []}
end