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:, index:) ⇒ NoisePolicy

Returns a new instance of NoisePolicy.

Parameters:



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

def initialize(link_resolver:, index:)
  @link_resolver = link_resolver
  @index = index
end

Instance Method Details

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

Parameters:

Returns:

  • (Boolean)


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

def noise_anchor?(text:, destination_facts:, anchor: nil, container: nil, heading_anchor: false) # rubocop:disable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
  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?(anchor, container)
end