parser.rb 490 B

12345678910111213141516171819202122232425262728
  1. require 'nokogiri'
  2. module Docs
  3. class Parser
  4. def initialize(content)
  5. @content = content
  6. end
  7. def html
  8. @html ||= document? ? parse_as_document : parse_as_fragment
  9. end
  10. private
  11. def document?
  12. @content =~ /\A\s*<!doctype/i
  13. end
  14. def parse_as_document
  15. document = Nokogiri::HTML.parse @content, nil, 'UTF-8'
  16. document.at_css 'body'
  17. end
  18. def parse_as_fragment
  19. Nokogiri::HTML.fragment @content, 'UTF-8'
  20. end
  21. end
  22. end