module Gitlab module Diff class File attr_reader :diff, :repository, :new_ref, :old_ref delegate :new_file, :deleted_file, :renamed_file, :old_path, :new_path, to: :diff, prefix: false def initialize(diff, diff_refs, repository) @diff = diff @repository = repository @old_ref, @new_ref = diff_refs end # Array of Gitlab::DIff::Line objects def diff_lines @lines ||= parser.parse(raw_diff.lines) end def highlighted_diff_lines Gitlab::Diff::Highlight.process_diff_lines(self) 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 raw_diff diff.diff.to_s end def next_line(index) diff_lines[index + 1] end def prev_line(index) if index > 0 diff_lines[index - 1] end end def file_path if diff.new_path.present? diff.new_path elsif diff.old_path.present? diff.old_path end end def added_lines diff_lines.count(&:added?) end def removed_lines diff_lines.count(&:removed?) end end end end