summaryrefslogtreecommitdiff
path: root/lib/gitlab/diff/inline_diff_marker.rb
blob: 81e91ea0ab7c2d8f1544f73218c79a948aafd356 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
module Gitlab
  module Diff
    class InlineDiffMarker < Gitlab::StringRangeMarker
      def initialize(line, rich_line = nil)
        super(line, rich_line || line)
      end

      def mark(line_inline_diffs, mode: nil)
        super(line_inline_diffs) do |text, left:, right:|
          %{<span class="#{html_class_names(left, right, mode)}">#{text}</span>}
        end
      end

      private

      def html_class_names(left, right, mode)
        class_names = ["idiff"]
        class_names << "left"  if left
        class_names << "right" if right
        class_names << mode if mode
        class_names.join(" ")
      end
    end
  end
end