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 =
{
  '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.



18
19
20
# File 'lib/html2rss/selectors/post_processors/html_transformers/transform_urls_to_absolute_ones.rb', line 18

def initialize(channel_url)
  @channel_url = channel_url
end

Instance Method Details

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

Transforms URLs to absolute ones.



24
25
26
27
28
29
30
# File 'lib/html2rss/selectors/post_processors/html_transformers/transform_urls_to_absolute_ones.rb', line 24

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