module Docs class Parser def initialize(content) @content = content end def html @html ||= document? ? parse_as_document : parse_as_fragment end private def document? @content =~ /\A\s*<(?:\!doctype|html)/i end def parse_as_document document = Nokogiri::HTML.parse @content, nil, 'UTF-8' document.at_css 'body' end def parse_as_fragment Nokogiri::HTML.fragment @content, 'UTF-8' end end end