Sha256: 5450555ad9590ec94527d5c6681d38241abf161e1811cdbbf1cbf107724115e8

Contents?: true

Size: 940 Bytes

Versions: 9

Compression:

Stored size: 940 Bytes

Contents

module Nexmo
  module OAS
    module Renderer
      module Filters
        class ExternalLink < Banzai::Filter
          def call(input)
            @input = input

            document.css('a').each_with_index do |link, _index|
              if link['href']&.start_with?('http') && link['class'] && !link['class'].include?('no-external-marker')
                link['target'] = '_blank'
                if link.css('svg').empty?
                  link.add_child <<~HEREDOC
                    &nbsp;<svg class="Vlt-icon Vlt-icon--smaller Vlt-icon--text-bottom Vlt-blue-dark"><use xlink:href="/symbol/volta-icons.svg#Vlt-icon-open"></use></svg>
                  HEREDOC
                end
              end
            end

            @document.to_html
          end

          private

          def document
            @document ||= Nokogiri::HTML::DocumentFragment.parse(@input)
          end
        end
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
nexmo-oas-renderer-0.3.7 lib/nexmo/oas/renderer/filters/external_link.rb
nexmo-oas-renderer-0.3.6 lib/nexmo/oas/renderer/filters/external_link.rb
nexmo-oas-renderer-0.3.5 lib/nexmo/oas/renderer/filters/external_link.rb
nexmo-oas-renderer-0.3.4 lib/nexmo/oas/renderer/filters/external_link.rb
nexmo-oas-renderer-0.3.3 lib/nexmo/oas/renderer/filters/external_link.rb
nexmo-oas-renderer-0.3.2 lib/nexmo/oas/renderer/filters/external_link.rb
nexmo-oas-renderer-0.3.1 lib/nexmo/oas/renderer/filters/external_link.rb
nexmo-oas-renderer-0.3.0 lib/nexmo/oas/renderer/filters/external_link.rb
nexmo-oas-renderer-0.2.2 lib/nexmo/oas/renderer/filters/external_link.rb