Class: Html2rss::AutoSource::Segmenter::PrimaryLink
- Inherits:
-
Object
- Object
- Html2rss::AutoSource::Segmenter::PrimaryLink
- Defined in:
- lib/html2rss/auto_source/segmenter/primary_link.rb
Overview
Selects the strongest content-like primary link inside a container (port of Discovery::SemanticAnchorCandidates).
Instance Method Summary collapse
-
#initialize(segmenter) ⇒ PrimaryLink
constructor
A new instance of PrimaryLink.
- #select(container) ⇒ SST::Node?
Constructor Details
#initialize(segmenter) ⇒ PrimaryLink
Returns a new instance of PrimaryLink.
11 12 13 14 15 16 |
# File 'lib/html2rss/auto_source/segmenter/primary_link.rb', line 11 def initialize(segmenter) @segmenter = segmenter @index = segmenter.index @link_resolver = segmenter.link_resolver @noise_policy = segmenter.noise_policy end |
Instance Method Details
#select(container) ⇒ SST::Node?
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/html2rss/auto_source/segmenter/primary_link.rb', line 21 def select(container) # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity winners = {} container.find_all(&:link?).each do |anchor| next if @index.ignored_chrome?(anchor) facts = candidate_facts(anchor, container) next unless facts dest = facts[:destination] current = winners[dest] winners[dest] = facts if current.nil? || facts[:score] > current[:score] end winners.values.max_by { |f| f[:score] }&.fetch(:anchor) end |