file.rb 878 字节
Newer Older
D
Dmitriy Zaporozhets 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
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?
24
        !!(diff.a_mode && diff.b_mode && diff.a_mode != diff.b_mode)
D
Dmitriy Zaporozhets 已提交
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
      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