module Nokogiri::More::NodeChildrenGroups
Public Instance Methods
children_groups(*selectors)
click to toggle source
# File lib/nokogiri/more.rb, line 10 def children_groups(*selectors) groups = [] flat = children.select { |node| selectors.any? { |s| node.matches?(s) } } groups << make_group(flat, selectors) until flat.empty? groups end
each_term()
click to toggle source
# File lib/nokogiri/more.rb, line 17 def each_term children_groups('dt', 'dd') end
Private Instance Methods
make_group(flat, selectors)
click to toggle source
# File lib/nokogiri/more.rb, line 23 def make_group(flat, selectors) sel = selectors.dup group = [[]] until flat.empty? if flat.first.matches?(sel.first) group.last << flat.shift elsif sel.size > 1 && flat.first.matches?(sel[1]) sel.shift group << [] group.last << flat.shift else break end end group end