Class HTML5::InitialPhase
In: lib/feed_tools/vendor/html5/lib/html5/html5parser/initial_phase.rb
Parent: Phase

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]