summaryrefslogtreecommitdiff
path: root/lib/gitlab/markdown/autolink_filter.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/markdown/autolink_filter.rb')
-rw-r--r--lib/gitlab/markdown/autolink_filter.rb8
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/gitlab/markdown/autolink_filter.rb b/lib/gitlab/markdown/autolink_filter.rb
index 4e14a048cfb..541f1d88ffc 100644
--- a/lib/gitlab/markdown/autolink_filter.rb
+++ b/lib/gitlab/markdown/autolink_filter.rb
@@ -87,8 +87,14 @@ module Gitlab
def autolink_filter(text)
text.gsub(LINK_PATTERN) do |match|
+ # Remove any trailing HTML entities and store them for appending
+ # outside the link element. The entity must be marked HTML safe in
+ # order to be output literally rather than escaped.
+ match.gsub!(/((?:&[\w#]+;)+)\z/, '')
+ dropped = ($1 || '').html_safe
+
options = link_options.merge(href: match)
- content_tag(:a, match, options)
+ content_tag(:a, match, options) + dropped
end
end