2019-07-07 11:18:12 +05:30
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
module Gitlab
|
|
|
|
module Diff
|
|
|
|
class SuggestionDiff
|
|
|
|
include Gitlab::Utils::StrongMemoize
|
|
|
|
|
|
|
|
delegate :from_content, :to_content, :from_line, to: :@suggestible
|
|
|
|
|
|
|
|
def initialize(suggestible)
|
|
|
|
@suggestible = suggestible
|
|
|
|
end
|
|
|
|
|
|
|
|
def diff_lines
|
|
|
|
Gitlab::Diff::Parser.new.parse(raw_diff.each_line).to_a
|
|
|
|
end
|
|
|
|
|
|
|
|
private
|
|
|
|
|
|
|
|
def raw_diff
|
2020-03-09 13:42:32 +05:30
|
|
|
"#{diff_header}\n#{from_content_as_diff}\n#{to_content_as_diff}"
|
2019-07-07 11:18:12 +05:30
|
|
|
end
|
|
|
|
|
|
|
|
def diff_header
|
|
|
|
"@@ -#{from_line} +#{from_line}"
|
|
|
|
end
|
|
|
|
|
|
|
|
def from_content_as_diff
|
2020-03-09 13:42:32 +05:30
|
|
|
from_content.lines.map { |line| line.prepend('-') }.join.delete_suffix("\n")
|
2019-07-07 11:18:12 +05:30
|
|
|
end
|
|
|
|
|
|
|
|
def to_content_as_diff
|
|
|
|
to_content.lines.map { |line| line.prepend('+') }.join
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|