module Nokogiri::HTML

def fragment string

Parse a fragment from +string+ in to a NodeSet.
###
def fragment string
  doc = parse(string)
  fragment = XML::DocumentFragment.new(doc)
  finder = lambda { |c, f|
    c.each do |child|
      if string == child.content && child.name == 'text'
        fragment.add_child(child)
      end
      fragment.add_child(child) if string =~ /<#{child.name}/
    end
    return fragment if fragment.children.length > 0
    c.each do |child|
      finder.call(child.children, f)
    end
  }
  finder.call(doc.children, finder)
  fragment
end

def parse string_or_io, url = nil, encoding = nil, options = 2145

Parse HTML. See Nokogiri.HTML.
##
def parse string_or_io, url = nil, encoding = nil, options = 2145
  if string_or_io.respond_to?(:encoding)
    encoding ||= string_or_io.encoding.name
  end
  if string_or_io.respond_to?(:read)
    url ||= string_or_io.respond_to?(:path) ? string_or_io.path : nil
    return Document.read_io(string_or_io, url, encoding, options)
  end
  return Document.new if(string_or_io.length == 0)
  Document.read_memory(string_or_io, url, encoding, options)
end