summaryrefslogtreecommitdiff
path: root/lib/gitlab/diff/inline_diff_marker.rb
blob: 010b4be7b4031c39d20d8c3370c81843feba3521 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
module Gitlab
  module Diff
    class InlineDiffMarker < Gitlab::StringRangeMarker
      def mark(line_inline_diffs, mode: nil)
        mark = super(line_inline_diffs) do |text, left:, right:|
          %{<span class="#{html_class_names(left, right, mode)}">#{text}</span>}
        end
        mark.html_safe
      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