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