class Nokogiri::XML::BeforeHandler

:nodoc:

def characters string

def characters string
  node = @stack.last
  node.content += string
end

def end_element name

def end_element name
  return unless @original_html =~ /<#{name}/i
  @node.add_previous_sibling @stack.last if @stack.length == 1
  @stack.pop
end

def initialize node, original_html

:nodoc:
def initialize node, original_html
  @original_html = original_html
  @node = node
  @stack = []
end

def start_element name, attrs = []

def start_element name, attrs = []
  return unless @original_html =~ /<#{name}/i
  node = Node.new(name)
  Hash[*attrs].each do |k,v|
    node[k] = v
  end
  node.parent = @stack.last if @stack.length != 0
  @stack << node
end