class Kramdown::Parser::Html

Used for parsing an HTML document.

The parsing code is in the Parser module that can also be used by other parsers.

Public Instance Methods

parse() click to toggle source

Parse the source string provided on initialization as HTML document.

    # File lib/kramdown/parser/html.rb
592 def parse
593   @stack, @tree = [], @root
594   @src = Kramdown::Utils::StringScanner.new(adapt_source(source))
595 
596   while true
597     if (result = @src.scan(/\s*#{HTML_INSTRUCTION_RE}/o))
598       @tree.children << Element.new(:xml_pi, result.strip, nil, category: :block)
599     elsif (result = @src.scan(/\s*#{HTML_DOCTYPE_RE}/o))
600       # ignore the doctype
601     elsif (result = @src.scan(/\s*#{HTML_COMMENT_RE}/o))
602       @tree.children << Element.new(:xml_comment, result.strip, nil, category: :block)
603     else
604       break
605     end
606   end
607 
608   tag_handler = lambda do |c, closed, handle_body|
609     parse_raw_html(c, &tag_handler) if !closed && handle_body
610   end
611   parse_raw_html(@tree, &tag_handler)
612 
613   ElementConverter.convert(@tree)
614 end