summaryrefslogtreecommitdiff
path: root/lib/banzai/filter/external_link_filter.rb
diff options
context:
space:
mode:
authorFelipe Artur <felipefac@gmail.com>2016-06-22 10:47:48 -0300
committerFelipe Artur <felipefac@gmail.com>2016-06-22 10:47:48 -0300
commit2674b548601b279ada46d4b218a9def6fd5b9f6d (patch)
treeca1f09225e4d5b80c800af521735bf34f04e16d0 /lib/banzai/filter/external_link_filter.rb
parent8447c6b180297840d835a609d95808834f498d87 (diff)
parent6f6c6f68ea7cb976b6c1598e705ba8b2bdaf05a1 (diff)
downloadgitlab-ce-2674b548601b279ada46d4b218a9def6fd5b9f6d.tar.gz
merge master into issue_3359_3
Diffstat (limited to 'lib/banzai/filter/external_link_filter.rb')
-rw-r--r--lib/banzai/filter/external_link_filter.rb13
1 files changed, 2 insertions, 11 deletions
diff --git a/lib/banzai/filter/external_link_filter.rb b/lib/banzai/filter/external_link_filter.rb
index f73ecfc9418..0a29c547a4d 100644
--- a/lib/banzai/filter/external_link_filter.rb
+++ b/lib/banzai/filter/external_link_filter.rb
@@ -3,17 +3,8 @@ module Banzai
# HTML Filter to modify the attributes of external links
class ExternalLinkFilter < HTML::Pipeline::Filter
def call
- doc.search('a').each do |node|
- link = node.attr('href')
-
- next unless link
-
- # Skip non-HTTP(S) links
- next unless link.start_with?('http')
-
- # Skip internal links
- next if link.start_with?(internal_url)
-
+ # Skip non-HTTP(S) links and internal links
+ doc.xpath("descendant-or-self::a[starts-with(@href, 'http') and not(starts-with(@href, '#{internal_url}'))]").each do |node|
node.set_attribute('rel', 'nofollow noreferrer')
node.set_attribute('target', '_blank')
end