class Linterbot::PullRequest

Attributes

github_client[RW]
pull_request_number[RW]
repository[RW]

Public Class Methods

new(repository, pull_request_number, github_client) click to toggle source
# File lib/linterbot/pull_request.rb, line 32
def initialize(repository, pull_request_number, github_client)
  @github_client = github_client
  @repository = repository
  @pull_request_number = pull_request_number
end

Public Instance Methods

added_and_modified_files() click to toggle source
# File lib/linterbot/pull_request.rb, line 38
def added_and_modified_files
  @added_and_modified_files ||= AddedModifiedFiles.new(files)
end
commits() click to toggle source
# File lib/linterbot/pull_request.rb, line 46
def commits
  @commits ||= fetch_pull_request_commits
end
commits_for_file(filename) click to toggle source
# File lib/linterbot/pull_request.rb, line 50
def commits_for_file(filename)
  commits.select { |commit| commit.files.map(&:filename).include?(filename) }
end
file_for_filename(filename) click to toggle source
# File lib/linterbot/pull_request.rb, line 54
def file_for_filename(filename)
  files.select { |file| file.filename == filename }
    .first
end
files() click to toggle source
# File lib/linterbot/pull_request.rb, line 42
def files
  @files ||= fetch_pull_request_files
end
newest_commit() click to toggle source
# File lib/linterbot/pull_request.rb, line 64
def newest_commit
  commits.first
end
patch_for_file(filename) click to toggle source
# File lib/linterbot/pull_request.rb, line 59
def patch_for_file(filename)
  file = file_for_filename(filename)
  return file.patch if file
end

Private Instance Methods

fetch_pull_request_commits() click to toggle source
# File lib/linterbot/pull_request.rb, line 75
def fetch_pull_request_commits
  github_client.pull_request_commits(repository, pull_request_number)
    .reverse
    .map do |commit|
      full_commit = github_client.commit(repository, commit.sha).to_h
      full_commit[:files].map! { |file| OpenStruct.new(file.to_h) }
      OpenStruct.new(full_commit)
    end
end
fetch_pull_request_files() click to toggle source
# File lib/linterbot/pull_request.rb, line 70
def fetch_pull_request_files
  github_client.pull_request_files(repository, pull_request_number)
    .map { |file| OpenStruct.new(file.to_h) }
end