Class: Html2rss::LinkDestination::NoisePolicy

Inherits:
Object
  • Object
show all
Defined in:
lib/html2rss/link_destination/noise_policy.rb

Overview

Noise / junk chrome eligibility for SST anchors (port of LinkHeuristics#noise_anchor?).

Constant Summary collapse

ICON_NAMES =

Child tag names that mark icon-only anchors as noise.

%i[img svg].freeze

Instance Method Summary collapse

Constructor Details

#initialize(link_resolver:) ⇒ NoisePolicy

Returns a new instance of NoisePolicy.

Parameters:

  • link_resolver (LinkResolver)


12
13
14
# File 'lib/html2rss/link_destination/noise_policy.rb', line 12

def initialize(link_resolver:)
  @link_resolver = link_resolver
end

Instance Method Details

#noise_anchor?(text:, destination_facts:, anchor: nil, container: nil, heading_anchor: false, utility_landmark_ancestor: false) ⇒ Boolean

rubocop:disable Metrics/CyclomaticComplexity, Metrics/ParameterLists, Metrics/PerceivedComplexity, Lint/UnusedMethodArgument

Parameters:

  • text (String)
  • destination_facts (LinkDestination::DestinationFacts, nil)
  • anchor (SST::Node, nil) (defaults to: nil)
  • container (SST::Node, nil) (defaults to: nil)
  • heading_anchor (Boolean) (defaults to: false)
  • utility_landmark_ancestor (Boolean) (defaults to: false)

    pre-computed by Segmenter tree walk

Returns:

  • (Boolean)


25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/html2rss/link_destination/noise_policy.rb', line 25

def noise_anchor?(text:, destination_facts:, anchor: nil, container: nil,
                  heading_anchor: false, utility_landmark_ancestor: false)
  return true unless destination_facts

  destination_facts.taxonomy_path ||
    short_utility_label?(text, destination_facts) ||
    recommended_chrome?(text, destination_facts, heading_anchor:) ||
    (@link_resolver.utility_prefix_text?(text) && destination_facts.high_confidence_utility_destination) ||
    (@link_resolver.utility_text?(text) && destination_facts.vanity_path) ||
    utility_text_chrome?(text, destination_facts, heading_anchor:) ||
    icon_only_anchor?(anchor, text) ||
    utility_landmark_ancestor
end