class HTML::Selector

def select_first(root)

if no element matches the selector.
Similar to #select but returns the first matching element. Returns +nil+
def select_first(root)
  stack = [root]
  while node = stack.pop
    if node.tag? && subset = match(node, true)
      return subset.first if !subset.empty?
    elsif children = node.children
      stack.concat children.reverse
    end
  end
  nil
end