Sha256: b363ac87ad02625e520c11da84436ece10096ce996f602df2868018687435bf8

Contents?: true

Size: 589 Bytes

Versions: 6

Compression:

Stored size: 589 Bytes

Contents

class Kramdown::Parser::NoopenerGFM < Kramdown::Parser::GFM
  SAFE_OPTS = { "target" => "_blank", "rel"=>"nofollow noopener noreferrer" }.freeze

  def initialize(source, options)
    super
    @same_tab_domains = options.fetch(:same_tab_domains, [])
  end

  def update_elements(element)
    if element.type == :a && \
       element.attr.respond_to?(:[]) && \
       (href = element.attr['href']) && \
       URI::DEFAULT_PARSER.regexp[:ABS_URI].match(href) && \
       !@same_tab_domains.include?(URI::parse(href).host)

      element.attr.merge!(SAFE_OPTS)
    end
    super
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
jekyll-octopod-0.9.15 lib/kramdown/parser/noopener_gfm.rb
jekyll-octopod-0.9.14 lib/kramdown/parser/noopener_gfm.rb
jekyll-octopod-0.9.13 lib/kramdown/parser/noopener_gfm.rb
jekyll-octopod-0.9.12 lib/kramdown/parser/noopener_gfm.rb
jekyll-octopod-0.9.11 lib/kramdown/parser/noopener_gfm.rb
jekyll-octopod-0.9.10 lib/kramdown/parser/noopener_gfm.rb