summaryrefslogtreecommitdiff
path: root/lib/gitlab/diff/inline_diff_marker.rb
diff options
context:
space:
mode:
authorDouwe Maan <douwe@selenight.nl>2016-01-29 19:37:17 +0100
committerDouwe Maan <douwe@selenight.nl>2016-01-29 19:37:17 +0100
commit677b4db9e682b29bb15dddb84fe80b976490a671 (patch)
treea0cfa62dd011bfe897d01ad0ef87540d4ccc23a9 /lib/gitlab/diff/inline_diff_marker.rb
parente221990ebac72b8b229b8c3ff38069edbf7776a7 (diff)
downloadgitlab-ce-677b4db9e682b29bb15dddb84fe80b976490a671.tar.gz
Mark inline difference between old and new paths when a file is renamed
Diffstat (limited to 'lib/gitlab/diff/inline_diff_marker.rb')
-rw-r--r--lib/gitlab/diff/inline_diff_marker.rb14
1 files changed, 10 insertions, 4 deletions
diff --git a/lib/gitlab/diff/inline_diff_marker.rb b/lib/gitlab/diff/inline_diff_marker.rb
index 1d7fa1bce06..dccb717e95d 100644
--- a/lib/gitlab/diff/inline_diff_marker.rb
+++ b/lib/gitlab/diff/inline_diff_marker.rb
@@ -5,10 +5,12 @@ module Gitlab
def initialize(raw_line, rich_line = raw_line)
@raw_line = raw_line
- @rich_line = rich_line
+ @rich_line = ERB::Util.html_escape(rich_line)
end
def mark(line_inline_diffs)
+ return rich_line unless line_inline_diffs
+
marker_ranges = []
line_inline_diffs.each do |inline_diff_range|
# Map the inline-diff range based on the raw line to character positions in the rich line
@@ -19,11 +21,15 @@ module Gitlab
offset = 0
# Mark each range
- marker_ranges.each do |range|
- offset = insert_around_range(rich_line, range, "<span class='idiff'>", "</span>", offset)
+ marker_ranges.each_with_index do |range, i|
+ class_names = ["idiff"]
+ class_names << "left" if i == 0
+ class_names << "right" if i == marker_ranges.length - 1
+
+ offset = insert_around_range(rich_line, range, "<span class='#{class_names.join(" ")}'>", "</span>", offset)
end
- rich_line
+ rich_line.html_safe
end
private