Class: Banzai::Filter::ExternalLinkFilter
- Inherits:
-
HTML::Pipeline::Filter
- Object
- HTML::Pipeline::Filter
- Banzai::Filter::ExternalLinkFilter
- Includes:
- Concerns::TimeoutFilterHandler
- Defined in:
- lib/banzai/filter/external_link_filter.rb
Overview
HTML Filter to modify the attributes of external links. This is considered a sanitization filter.
Constant Summary collapse
- SCHEMES =
['http', 'https', nil].freeze
- RTLO =
"\u202E"- ENCODED_RTLO =
'%E2%80%AE'
Constants included from Concerns::TimeoutFilterHandler
Concerns::TimeoutFilterHandler::COMPLEX_MARKDOWN_MESSAGE, Concerns::TimeoutFilterHandler::RENDER_TIMEOUT, Concerns::TimeoutFilterHandler::SANITIZATION_RENDER_TIMEOUT
Instance Method Summary collapse
Instance Method Details
#call ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/banzai/filter/external_link_filter.rb', line 14 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 |