Class: Html2rss::Selectors::PostProcessors::HtmlTransformers::TransformUrlsToAbsoluteOnes

Inherits:
Object
  • Object
show all
Defined in:
lib/html2rss/selectors/post_processors/html_transformers/transform_urls_to_absolute_ones.rb

Overview

Transformer that converts relative URLs to absolute URLs within specified HTML elements.

Constant Summary collapse

URL_ELEMENTS_WITH_URL_ATTRIBUTE =

HTML tags and the URL-bearing attribute that should be normalized.

{
  'a' => :href, # Visible link
  'img' => :src, # Visible image
  'iframe' => :src, # Embedded frame (visible content)
  'audio' => :src, # Can show controls, so potentially visible
  'video' => :src # Video player is visible
}.freeze

Instance Method Summary collapse

Constructor Details

#initialize(channel_url) ⇒ TransformUrlsToAbsoluteOnes

Returns a new instance of TransformUrlsToAbsoluteOnes.

Parameters:

  • channel_url (String, Html2rss::Url)

    base URL used to resolve relative links



21
22
23
# File 'lib/html2rss/selectors/post_processors/html_transformers/transform_urls_to_absolute_ones.rb', line 21

def initialize(channel_url)
  @channel_url = channel_url
end

Instance Method Details

#call(node_name:, node:, **_env) ⇒ void

This method returns an undefined value.

Transforms URLs to absolute ones.

Parameters:

  • node_name (String)

    node name currently being transformed

  • node (Nokogiri::XML::Node)

    node currently being transformed

  • _env (Hash)

    transformer context

Options Hash (**_env):

  • :_reserved (Object)

    reserved for transformer pipeline context



33
34
35
36
37
38
39
# File 'lib/html2rss/selectors/post_processors/html_transformers/transform_urls_to_absolute_ones.rb', line 33

def call(node_name:, node:, **_env)
  return unless URL_ELEMENTS_WITH_URL_ATTRIBUTE.key?(node_name)

  url_attribute = URL_ELEMENTS_WITH_URL_ATTRIBUTE[node_name]
  url = node[url_attribute]
  node[url_attribute] = Url.from_relative(url, @channel_url).to_s
end