diff options
author | Douwe Maan <douwe@gitlab.com> | 2017-08-18 08:50:59 +0000 |
---|---|---|
committer | Douwe Maan <douwe@gitlab.com> | 2017-08-18 08:50:59 +0000 |
commit | cc543b6c85d25cf7959f6d08cc353601f5655bed (patch) | |
tree | 23239439bfeea6d686e67d528f5949b3a970d63e /lib | |
parent | 6ed01ebf9198a0652ad7e0825415706745c74b2c (diff) | |
parent | c271fdc80fd17e1931a1d912e231bec2b8e3d098 (diff) | |
download | gitlab-ce-cc543b6c85d25cf7959f6d08cc353601f5655bed.tar.gz |
Merge branch '36041-notification-title' into 'master'
Don't escape html entities in InlineDiffMarkdownMarker
Closes #36041
See merge request !13553
Diffstat (limited to 'lib')
-rw-r--r-- | lib/gitlab/string_range_marker.rb | 34 |
1 files changed, 22 insertions, 12 deletions
diff --git a/lib/gitlab/string_range_marker.rb b/lib/gitlab/string_range_marker.rb index 94fba0a221a..11aeec1ebfa 100644 --- a/lib/gitlab/string_range_marker.rb +++ b/lib/gitlab/string_range_marker.rb @@ -1,21 +1,31 @@ module Gitlab class StringRangeMarker - attr_accessor :raw_line, :rich_line - - def initialize(raw_line, rich_line = raw_line) - @raw_line = raw_line - @rich_line = ERB::Util.html_escape(rich_line) + attr_accessor :raw_line, :rich_line, :html_escaped + + def initialize(raw_line, rich_line = nil) + @raw_line = raw_line.dup + if rich_line.nil? + @rich_line = raw_line.dup + @html_escaped = false + else + @rich_line = ERB::Util.html_escape(rich_line) + @html_escaped = true + end end def mark(marker_ranges) return rich_line unless marker_ranges - rich_marker_ranges = [] - marker_ranges.each do |range| - # Map the inline-diff range based on the raw line to character positions in the rich line - rich_positions = position_mapping[range].flatten - # Turn the array of character positions into ranges - rich_marker_ranges.concat(collapse_ranges(rich_positions)) + if html_escaped + rich_marker_ranges = [] + marker_ranges.each do |range| + # Map the inline-diff range based on the raw line to character positions in the rich line + rich_positions = position_mapping[range].flatten + # Turn the array of character positions into ranges + rich_marker_ranges.concat(collapse_ranges(rich_positions)) + end + else + rich_marker_ranges = marker_ranges end offset = 0 @@ -31,7 +41,7 @@ module Gitlab offset += text.length - original_text.length end - rich_line.html_safe + @html_escaped ? rich_line.html_safe : rich_line end private |