Module: Html2rss::AutoSource::Segmenter::Semantic

Defined in:
lib/html2rss/auto_source/segmenter/semantic.rb

Overview

Collects leaf semantic containers (port of Discovery::SemanticContainers).

Constant Summary collapse

CANDIDATE_NAMES =

Tag names collected as leaf semantic containers.

%i[article section li tr div].to_set.freeze

Class Method Summary collapse

Class Method Details

.call(segmenter) ⇒ Array<Segment>

Parameters:

Returns:



17
18
19
20
21
22
23
24
25
26
27
# File 'lib/html2rss/auto_source/segmenter/semantic.rb', line 17

def call(segmenter)
  containers = collect_containers(segmenter.index)
  primary = PrimaryLink.new(segmenter)

  containers.each_with_index.filter_map do |container, position|
    link = primary.select(container)
    next unless link || segmenter.permit_unanchored

    Segment.build(root_node: container, primary_link: link, strategy: :semantic, position:)
  end
end