Class: Html2rss::AutoSource::Discovery::DomClustering::OverlapResolver
- Inherits:
-
Object
- Object
- Html2rss::AutoSource::Discovery::DomClustering::OverlapResolver
- Defined in:
- lib/html2rss/auto_source/discovery/dom_clustering/overlap_resolver.rb
Overview
Filters layout wrapper groups and resolves 1-to-1 nested card wrappers.
Instance Method Summary collapse
-
#filter_1_to_1_overlap(groups) ⇒ Hash{String => Array<Nokogiri::XML::Node>}
If group A contains group B with the same size, keep the real content card.
-
#filter_containers(groups) ⇒ Hash{String => Array<Nokogiri::XML::Node>}
Discard group A if any node of A contains > 1 node of another group B.
-
#initialize(layout_tags:, word_counter:) ⇒ OverlapResolver
constructor
A new instance of OverlapResolver.
Constructor Details
#initialize(layout_tags:, word_counter:) ⇒ OverlapResolver
Returns a new instance of OverlapResolver.
12 13 14 15 |
# File 'lib/html2rss/auto_source/discovery/dom_clustering/overlap_resolver.rb', line 12 def initialize(layout_tags:, word_counter:) @layout_tags = @word_counter = word_counter end |
Instance Method Details
#filter_1_to_1_overlap(groups) ⇒ Hash{String => Array<Nokogiri::XML::Node>}
If group A contains group B with the same size, keep the real content card.
31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/html2rss/auto_source/discovery/dom_clustering/overlap_resolver.rb', line 31 def filter_1_to_1_overlap(groups) discarded = Set.new groups.each_key do |cls_a| groups.each_key do |cls_b| next if cls_a == cls_b || discarded.include?(cls_a) || discarded.include?(cls_b) resolve_1_to_1_overlap(cls_a, cls_b, groups, discarded) end end groups.except(*discarded) end |
#filter_containers(groups) ⇒ Hash{String => Array<Nokogiri::XML::Node>}
Discard group A if any node of A contains > 1 node of another group B
21 22 23 24 25 |
# File 'lib/html2rss/auto_source/discovery/dom_clustering/overlap_resolver.rb', line 21 def filter_containers(groups) groups.reject do |cls_a, nodes_a| groups.any? { |cls_b, nodes_b| cls_a != cls_b && container_of?(nodes_a, nodes_b) } end end |