| Class | HTML5::InitialPhase |
| In: |
lib/feed_tools/vendor/html5/lib/html5/html5parser/initial_phase.rb
|
| Parent: | Phase |
# 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
# 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
# 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
# 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
# File lib/feed_tools/vendor/html5/lib/html5/html5parser/initial_phase.rb, line 112
112: def processSpaceCharacters(data)
113: end
# 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.
# 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