Class: Html2rss::AutoSource::Segmenter::Cluster::OverlapResolver
- Inherits:
-
Object
- Object
- Html2rss::AutoSource::Segmenter::Cluster::OverlapResolver
- Defined in:
- lib/html2rss/auto_source/segmenter/cluster.rb
Overview
Filters layout wrapper groups and resolves 1-to-1 nested card wrappers.
Constant Summary collapse
- MAX_GROUPS =
Cap pairwise work on dense class grids.
40
Instance Method Summary collapse
- #filter_1_to_1_overlap(groups) ⇒ Hash{String => Array<SST::Node>}
- #filter_containers(groups) ⇒ Hash{String => Array<SST::Node>}
-
#initialize(index:) ⇒ OverlapResolver
constructor
A new instance of OverlapResolver.
Constructor Details
#initialize(index:) ⇒ OverlapResolver
Returns a new instance of OverlapResolver.
88 89 90 91 92 |
# File 'lib/html2rss/auto_source/segmenter/cluster.rb', line 88 def initialize(index:) @index = index @layout_tags = SST::Tags::LAYOUT_NAMES @scorer = Scoring::ClusterScorer.new end |
Instance Method Details
#filter_1_to_1_overlap(groups) ⇒ Hash{String => Array<SST::Node>}
105 106 107 108 109 110 111 112 113 114 115 |
# File 'lib/html2rss/auto_source/segmenter/cluster.rb', line 105 def filter_1_to_1_overlap(groups) discarded = {} groups.each_key do |cls_a| groups.each_key do |cls_b| next if cls_a == cls_b || discarded[cls_a] || discarded[cls_b] resolve_1_to_1_overlap(cls_a, cls_b, groups, discarded) end end groups.reject { |cls, _| discarded[cls] } end |
#filter_containers(groups) ⇒ Hash{String => Array<SST::Node>}
96 97 98 99 100 101 |
# File 'lib/html2rss/auto_source/segmenter/cluster.rb', line 96 def filter_containers(groups) capped = cap_groups(groups) capped.reject do |cls_a, nodes_a| capped.any? { |cls_b, nodes_b| cls_a != cls_b && container_of?(nodes_a, nodes_b) } end end |