gitlab-org--gitlab-foss/lib/gitlab/diff/file.rb

43 lines
878 B
Ruby

module Gitlab
module Diff
class File
attr_reader :diff, :blob
delegate :new_file, :deleted_file, :renamed_file,
:old_path, :new_path, to: :diff, prefix: false
def initialize(project, commit, diff)
@diff = diff
@blob = project.repository.blob_for_diff(commit, diff)
end
# Array of Gitlab::DIff::Line objects
def diff_lines
@lines ||= parser.parse(diff.diff.lines, old_path, new_path)
end
def blob_exists?
!@blob.nil?
end
def mode_changed?
!!(diff.a_mode && diff.b_mode && diff.a_mode != diff.b_mode)
end
def parser
Gitlab::Diff::Parser.new
end
def next_line(index)
diff_lines[index + 1]
end
def prev_line(index)
if index > 0
diff_lines[index - 1]
end
end
end
end
end