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