Class HTML5::InitialPhase
In: lib/feed_tools/vendor/html5/lib/html5/html5parser/initial_phase.rb
Parent: Phase
Phase XmlElementPhase InTablePhase RootElementPhase InHeadPhase AfterHeadPhase AfterFramesetPhase XmlRootPhase InitialPhase InTableBodyPhase InFramesetPhase InColumnGroupPhase InCaptionPhase TrailingEndPhase InSelectPhase BeforeHeadPhase InCellPhase InBodyPhase AfterBodyPhase InRowPhase Exception SerializeError EOF AssertionError ParseError HTMLSanitizer HTMLTokenizer XhmlRootPhase XMLParser XHTMLParser HTMLParser String EncodingBytes HTMLSerializer XHTMLSerializer TreeWalkers::Base NonRecursiveTreeWalker TreeWalker TreeWalker Base TreeWalker Element DocumentFragment Node CommentNode DocumentType TextNode Document Base::Node Node Node Base::TreeBuilder TreeBuilder TreeBuilder TreeBuilder Element DocumentFragment CommentNode DocumentType TextNode Document Element DocumentFragment CommentNode DocumentType TextNode Document Enumerable TestData Base OptionalTagFilter InjectMetaCharset WhitespaceFilter HTMLSanitizeFilter HTMLSanitizeModule SimpleDelegator HTMLInputStream EncodingParser ContentAttrParser Node TreeBuilder lib/feed_tools/vendor/html5/lib/html5/html5parser/trailing_end_phase.rb lib/feed_tools/vendor/html5/lib/html5/constants.rb lib/feed_tools/vendor/html5/lib/html5/html5parser/after_frameset_phase.rb lib/feed_tools/vendor/html5/lib/html5/liberalxmlparser.rb lib/feed_tools/vendor/html5/lib/html5/serializer/xhtmlserializer.rb lib/feed_tools/vendor/html5/lib/html5/html5parser/in_caption_phase.rb lib/feed_tools/vendor/html5/lib/html5/html5parser/in_frameset_phase.rb lib/feed_tools/vendor/html5/lib/html5/html5parser/in_table_body_phase.rb lib/feed_tools/vendor/html5/lib/html5/html5parser/initial_phase.rb lib/feed_tools/vendor/html5/lib/html5/html5parser/root_element_phase.rb lib/feed_tools/vendor/html5/lib/html5/serializer/htmlserializer.rb lib/feed_tools/vendor/html5/lib/html5/tokenizer.rb lib/feed_tools/vendor/html5/lib/html5/html5parser/before_head_phase.rb lib/feed_tools/vendor/html5/lib/html5/html5parser/in_select_phase.rb lib/feed_tools/vendor/html5/lib/html5/inputstream.rb lib/feed_tools/vendor/html5/lib/html5/html5parser/in_table_phase.rb lib/feed_tools/vendor/html5/lib/html5/html5parser/in_row_phase.rb lib/feed_tools/vendor/html5/lib/html5/html5parser/in_cell_phase.rb lib/feed_tools/vendor/html5/lib/html5/html5parser/phase.rb lib/feed_tools/vendor/html5/lib/html5/html5parser.rb lib/feed_tools/vendor/html5/lib/html5/html5parser/in_body_phase.rb lib/feed_tools/vendor/html5/lib/html5/html5parser/in_head_phase.rb lib/feed_tools/vendor/html5/lib/html5/html5parser/after_body_phase.rb lib/feed_tools/vendor/html5/lib/html5/html5parser/after_head_phase.rb lib/feed_tools/vendor/html5/lib/html5/sanitizer.rb lib/feed_tools/vendor/html5/lib/html5/html5parser/in_column_group_phase.rb lib/feed_tools/vendor/html5/lib/html5/treewalkers/base.rb lib/feed_tools/vendor/html5/lib/html5/treewalkers/hpricot.rb Hpricot TokenConstructor lib/feed_tools/vendor/html5/lib/html5/treewalkers/rexml.rb REXML lib/feed_tools/vendor/html5/lib/html5/treewalkers/simpletree.rb SimpleTree TreeWalkers HTMLSanitizeModule lib/feed_tools/vendor/html5/lib/html5/treebuilders/hpricot.rb Hpricot lib/feed_tools/vendor/html5/lib/html5/treebuilders/rexml.rb REXML lib/feed_tools/vendor/html5/lib/html5/treebuilders/base.rb Base lib/feed_tools/vendor/html5/lib/html5/treebuilders/simpletree.rb SimpleTree TreeBuilders lib/feed_tools/vendor/html5/tests/preamble.rb TestSupport Sniffer lib/feed_tools/vendor/html5/lib/html5/filters/whitespace.rb lib/feed_tools/vendor/html5/lib/html5/filters/optionaltags.rb lib/feed_tools/vendor/html5/lib/html5/filters/base.rb lib/feed_tools/vendor/html5/lib/html5/filters/inject_meta_charset.rb lib/feed_tools/vendor/html5/lib/html5/filters/sanitizer.rb Filters HTML5 dot/m_66_0.png

Methods

Public Instance methods

[Source]

     # File lib/feed_tools/vendor/html5/lib/html5/html5parser/initial_phase.rb, line 115
115:     def processCharacters(data)
116:       parse_error("expected-doctype-but-got-chars")
117:       @parser.phase = @parser.phases[:rootElement]
118:       @parser.phase.processCharacters(data)
119:     end

[Source]

    # File lib/feed_tools/vendor/html5/lib/html5/html5parser/initial_phase.rb, line 16
16:     def processComment(data)
17:       @tree.insert_comment(data, @tree.document)
18:     end

[Source]

     # File lib/feed_tools/vendor/html5/lib/html5/html5parser/initial_phase.rb, line 20
 20:     def processDoctype(name, publicId, systemId, correct)
 21:       if name.downcase != 'html' or publicId or systemId
 22:         parse_error("unknown-doctype")
 23:       end
 24:       # XXX need to update DOCTYPE tokens
 25:       @tree.insertDoctype(name, publicId, systemId)
 26: 
 27:       publicId = publicId.to_s.upcase
 28: 
 29:       if name.downcase != 'html'
 30:         # XXX quirks mode
 31:       else
 32:         if ["+//silmaril//dtd html pro v0r11 19970101//en",
 33:             "-//advasoft ltd//dtd html 3.0 aswedit + extensions//en",
 34:             "-//as//dtd html 3.0 aswedit + extensions//en",
 35:             "-//ietf//dtd html 2.0 level 1//en",
 36:             "-//ietf//dtd html 2.0 level 2//en",
 37:             "-//ietf//dtd html 2.0 strict level 1//en",
 38:             "-//ietf//dtd html 2.0 strict level 2//en",
 39:             "-//ietf//dtd html 2.0 strict//en",
 40:             "-//ietf//dtd html 2.0//en",
 41:             "-//ietf//dtd html 2.1e//en",
 42:             "-//ietf//dtd html 3.0//en",
 43:             "-//ietf//dtd html 3.0//en//",
 44:             "-//ietf//dtd html 3.2 final//en",
 45:             "-//ietf//dtd html 3.2//en",
 46:             "-//ietf//dtd html 3//en",
 47:             "-//ietf//dtd html level 0//en",
 48:             "-//ietf//dtd html level 0//en//2.0",
 49:             "-//ietf//dtd html level 1//en",
 50:             "-//ietf//dtd html level 1//en//2.0",
 51:             "-//ietf//dtd html level 2//en",
 52:             "-//ietf//dtd html level 2//en//2.0",
 53:             "-//ietf//dtd html level 3//en",
 54:             "-//ietf//dtd html level 3//en//3.0",
 55:             "-//ietf//dtd html strict level 0//en",
 56:             "-//ietf//dtd html strict level 0//en//2.0",
 57:             "-//ietf//dtd html strict level 1//en",
 58:             "-//ietf//dtd html strict level 1//en//2.0",
 59:             "-//ietf//dtd html strict level 2//en",
 60:             "-//ietf//dtd html strict level 2//en//2.0",
 61:             "-//ietf//dtd html strict level 3//en",
 62:             "-//ietf//dtd html strict level 3//en//3.0",
 63:             "-//ietf//dtd html strict//en",
 64:             "-//ietf//dtd html strict//en//2.0",
 65:             "-//ietf//dtd html strict//en//3.0",
 66:             "-//ietf//dtd html//en",
 67:             "-//ietf//dtd html//en//2.0",
 68:             "-//ietf//dtd html//en//3.0",
 69:             "-//metrius//dtd metrius presentational//en",
 70:             "-//microsoft//dtd internet explorer 2.0 html strict//en",
 71:             "-//microsoft//dtd internet explorer 2.0 html//en",
 72:             "-//microsoft//dtd internet explorer 2.0 tables//en",
 73:             "-//microsoft//dtd internet explorer 3.0 html strict//en",
 74:             "-//microsoft//dtd internet explorer 3.0 html//en",
 75:             "-//microsoft//dtd internet explorer 3.0 tables//en",
 76:             "-//netscape comm. corp.//dtd html//en",
 77:             "-//netscape comm. corp.//dtd strict html//en",
 78:             "-//o'reilly and associates//dtd html 2.0//en",
 79:             "-//o'reilly and associates//dtd html extended 1.0//en",
 80:             "-//spyglass//dtd html 2.0 extended//en",
 81:             "-//sq//dtd html 2.0 hotmetal + extensions//en",
 82:             "-//sun microsystems corp.//dtd hotjava html//en",
 83:             "-//sun microsystems corp.//dtd hotjava strict html//en",
 84:             "-//w3c//dtd html 3 1995-03-24//en",
 85:             "-//w3c//dtd html 3.2 draft//en",
 86:             "-//w3c//dtd html 3.2 final//en",
 87:             "-//w3c//dtd html 3.2//en",
 88:             "-//w3c//dtd html 3.2s draft//en",
 89:             "-//w3c//dtd html 4.0 frameset//en",
 90:             "-//w3c//dtd html 4.0 transitional//en",
 91:             "-//w3c//dtd html experimental 19960712//en",
 92:             "-//w3c//dtd html experimental 970421//en",
 93:             "-//w3c//dtd w3 html//en",
 94:             "-//w3o//dtd w3 html 3.0//en",
 95:             "-//w3o//dtd w3 html 3.0//en//",
 96:             "-//w3o//dtd w3 html strict 3.0//en//",
 97:             "-//webtechs//dtd mozilla html 2.0//en",
 98:             "-//webtechs//dtd mozilla html//en",
 99:             "-/w3c/dtd html 4.0 transitional/en",
100:             "html"].include?(publicId) or
101:           (systemId == nil and
102:             ["-//w3c//dtd html 4.01 frameset//EN",
103:              "-//w3c//dtd html 4.01 transitional//EN"].include?(publicId)) or
104:           (systemId == "http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd")
105:             #XXX quirks mode
106:           end
107:       end
108: 
109:       @parser.phase = @parser.phases[:rootElement]
110:     end

[Source]

     # File lib/feed_tools/vendor/html5/lib/html5/html5parser/initial_phase.rb, line 127
127:     def processEndTag(name)
128:       parse_error("expected-doctype-but-got-end-tag", {"name" => name})
129:       @parser.phase = @parser.phases[:rootElement]
130:       @parser.phase.processEndTag(name)
131:     end

[Source]

     # File lib/feed_tools/vendor/html5/lib/html5/html5parser/initial_phase.rb, line 112
112:     def processSpaceCharacters(data)
113:     end

[Source]

     # File lib/feed_tools/vendor/html5/lib/html5/html5parser/initial_phase.rb, line 121
121:     def processStartTag(name, attributes)
122:       parse_error("expected-doctype-but-got-start-tag", {"name" => name})
123:       @parser.phase = @parser.phases[:rootElement]
124:       @parser.phase.processStartTag(name, attributes)
125:     end

This phase deals with error handling as well which is currently not covered in the specification. The error handling is typically known as "quirks mode". It is expected that a future version of HTML5 will define this.

[Source]

    # File lib/feed_tools/vendor/html5/lib/html5/html5parser/initial_phase.rb, line 10
10:     def process_eof
11:       parse_error("expected-doctype-but-got-eof")
12:       @parser.phase = @parser.phases[:rootElement]
13:       @parser.phase.process_eof
14:     end

[Validate]