Class: Banzai::Filter::ExternalLinkFilter
- Inherits:
-
HTML::Pipeline::Filter
- Object
- HTML::Pipeline::Filter
- Banzai::Filter::ExternalLinkFilter
- Defined in:
- lib/banzai/filter/external_link_filter.rb
Overview
HTML Filter to modify the attributes of external links
Constant Summary collapse
- SCHEMES =
['http', 'https', nil].freeze
- RTLO =
"\u202E"
- ENCODED_RTLO =
'%E2%80%AE'
Instance Method Summary collapse
Instance Method Details
#call ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/banzai/filter/external_link_filter.rb', line 11 def call links.each do |node| # URI.parse does stricter checking on the url than Addressable, # such as on `mailto:` links. Since we've been using it, do an # initial parse for validity and then use Addressable # for IDN support, etc uri = uri_strict(node_src(node)) if uri node.set_attribute(node_src_attribute(node), uri.to_s) addressable_uri = addressable_uri(node_src(node)) else addressable_uri = nil end next if internal_url?(addressable_uri) punycode_autolink_node!(addressable_uri, node) sanitize_link_text!(node) add_malicious_tooltip!(addressable_uri, node) add_nofollow!(addressable_uri, node) end doc end |