class HTML::Pipeline::ExternalLinkFilter

Public Instance Methods

call() click to toggle source
# File lib/html/pipeline/external_link/filter.rb, line 8
def call
    doc.search("a").each do |anchor|
      next unless anchor["href"]
      href = anchor["href"].strip
      href_host = host_of(href)
      next unless href_host
      if href_host != hostname
        anchor["rel"] = "nofollow noopener"
        anchor["target"] = "_blank"
      end
    end

    doc
  end
validate() click to toggle source
# File lib/html/pipeline/external_link/filter.rb, line 23
def validate
  needs :hostname
end

Private Instance Methods

host_of(url) click to toggle source
# File lib/html/pipeline/external_link/filter.rb, line 29
def host_of(url)
  uri = Addressable::URI.parse(url)
  uri.host
rescue Addressable::URI::InvalidURIError
  nil
end
hostname() click to toggle source
# File lib/html/pipeline/external_link/filter.rb, line 36
def hostname
  context[:hostname]
end