module Nokogiri
def parse(string, url = nil, encoding = nil, options = nil)
##
def parse(string, url = nil, encoding = nil, options = nil) if string.respond_to?(:read) || /^\s*<(?:!DOCTYPE\s+)?html[\s>]/i.match?(string[0, 512]) # Expect an HTML indicator to appear within the first 512 # characters of a document. (<?xml ?> + <?xml-stylesheet ?> # shouldn't be that long) Nokogiri.HTML4( string, url, encoding, options || XML::ParseOptions::DEFAULT_HTML, ) else Nokogiri.XML( string, url, encoding, options || XML::ParseOptions::DEFAULT_XML, ) end.tap do |doc| yield doc if block_given? end end