feedtools 0.2.26 → 0.2.27

Sign up to get free protection for your applications and to get access to all the features.
Files changed (166) hide show
  1. data/CHANGELOG +232 -216
  2. data/db/migration.rb +2 -0
  3. data/db/schema.mysql.sql +2 -0
  4. data/db/schema.postgresql.sql +3 -1
  5. data/db/schema.sqlite.sql +3 -1
  6. data/lib/feed_tools.rb +37 -14
  7. data/lib/feed_tools/database_feed_cache.rb +13 -2
  8. data/lib/feed_tools/feed.rb +430 -104
  9. data/lib/feed_tools/feed_item.rb +533 -268
  10. data/lib/feed_tools/helpers/generic_helper.rb +1 -1
  11. data/lib/feed_tools/helpers/html_helper.rb +78 -116
  12. data/lib/feed_tools/helpers/retrieval_helper.rb +33 -3
  13. data/lib/feed_tools/helpers/uri_helper.rb +46 -54
  14. data/lib/feed_tools/monkey_patch.rb +27 -1
  15. data/lib/feed_tools/vendor/html5/History.txt +10 -0
  16. data/lib/feed_tools/vendor/html5/Manifest.txt +117 -0
  17. data/lib/feed_tools/vendor/html5/README +45 -0
  18. data/lib/feed_tools/vendor/html5/Rakefile.rb +33 -0
  19. data/lib/feed_tools/vendor/html5/bin/html5 +217 -0
  20. data/lib/feed_tools/vendor/html5/lib/core_ext/string.rb +17 -0
  21. data/lib/feed_tools/vendor/html5/lib/html5.rb +13 -0
  22. data/lib/feed_tools/vendor/html5/lib/html5/constants.rb +1046 -0
  23. data/lib/feed_tools/vendor/html5/lib/html5/filters/base.rb +10 -0
  24. data/lib/feed_tools/vendor/html5/lib/html5/filters/inject_meta_charset.rb +82 -0
  25. data/lib/feed_tools/vendor/html5/lib/html5/filters/iso639codes.rb +752 -0
  26. data/lib/feed_tools/vendor/html5/lib/html5/filters/optionaltags.rb +198 -0
  27. data/lib/feed_tools/vendor/html5/lib/html5/filters/rfc2046.rb +30 -0
  28. data/lib/feed_tools/vendor/html5/lib/html5/filters/rfc3987.rb +89 -0
  29. data/lib/feed_tools/vendor/html5/lib/html5/filters/sanitizer.rb +15 -0
  30. data/lib/feed_tools/vendor/html5/lib/html5/filters/validator.rb +830 -0
  31. data/lib/feed_tools/vendor/html5/lib/html5/filters/whitespace.rb +36 -0
  32. data/lib/feed_tools/vendor/html5/lib/html5/html5parser.rb +248 -0
  33. data/lib/feed_tools/vendor/html5/lib/html5/html5parser/after_body_phase.rb +46 -0
  34. data/lib/feed_tools/vendor/html5/lib/html5/html5parser/after_frameset_phase.rb +33 -0
  35. data/lib/feed_tools/vendor/html5/lib/html5/html5parser/after_head_phase.rb +50 -0
  36. data/lib/feed_tools/vendor/html5/lib/html5/html5parser/before_head_phase.rb +41 -0
  37. data/lib/feed_tools/vendor/html5/lib/html5/html5parser/in_body_phase.rb +613 -0
  38. data/lib/feed_tools/vendor/html5/lib/html5/html5parser/in_caption_phase.rb +69 -0
  39. data/lib/feed_tools/vendor/html5/lib/html5/html5parser/in_cell_phase.rb +78 -0
  40. data/lib/feed_tools/vendor/html5/lib/html5/html5parser/in_column_group_phase.rb +55 -0
  41. data/lib/feed_tools/vendor/html5/lib/html5/html5parser/in_frameset_phase.rb +57 -0
  42. data/lib/feed_tools/vendor/html5/lib/html5/html5parser/in_head_phase.rb +138 -0
  43. data/lib/feed_tools/vendor/html5/lib/html5/html5parser/in_row_phase.rb +89 -0
  44. data/lib/feed_tools/vendor/html5/lib/html5/html5parser/in_select_phase.rb +85 -0
  45. data/lib/feed_tools/vendor/html5/lib/html5/html5parser/in_table_body_phase.rb +86 -0
  46. data/lib/feed_tools/vendor/html5/lib/html5/html5parser/in_table_phase.rb +115 -0
  47. data/lib/feed_tools/vendor/html5/lib/html5/html5parser/initial_phase.rb +133 -0
  48. data/lib/feed_tools/vendor/html5/lib/html5/html5parser/phase.rb +154 -0
  49. data/lib/feed_tools/vendor/html5/lib/html5/html5parser/root_element_phase.rb +41 -0
  50. data/lib/feed_tools/vendor/html5/lib/html5/html5parser/trailing_end_phase.rb +35 -0
  51. data/lib/feed_tools/vendor/html5/lib/html5/inputstream.rb +648 -0
  52. data/lib/feed_tools/vendor/html5/lib/html5/liberalxmlparser.rb +158 -0
  53. data/lib/feed_tools/vendor/html5/lib/html5/sanitizer.rb +188 -0
  54. data/lib/feed_tools/vendor/html5/lib/html5/serializer.rb +2 -0
  55. data/lib/feed_tools/vendor/html5/lib/html5/serializer/htmlserializer.rb +179 -0
  56. data/lib/feed_tools/vendor/html5/lib/html5/serializer/xhtmlserializer.rb +20 -0
  57. data/lib/feed_tools/vendor/html5/lib/html5/sniffer.rb +45 -0
  58. data/lib/feed_tools/vendor/html5/lib/html5/tokenizer.rb +966 -0
  59. data/lib/feed_tools/vendor/html5/lib/html5/treebuilders.rb +24 -0
  60. data/lib/feed_tools/vendor/html5/lib/html5/treebuilders/base.rb +334 -0
  61. data/lib/feed_tools/vendor/html5/lib/html5/treebuilders/hpricot.rb +231 -0
  62. data/lib/feed_tools/vendor/html5/lib/html5/treebuilders/rexml.rb +209 -0
  63. data/lib/feed_tools/vendor/html5/lib/html5/treebuilders/simpletree.rb +185 -0
  64. data/lib/feed_tools/vendor/html5/lib/html5/treewalkers.rb +26 -0
  65. data/lib/feed_tools/vendor/html5/lib/html5/treewalkers/base.rb +162 -0
  66. data/lib/feed_tools/vendor/html5/lib/html5/treewalkers/hpricot.rb +48 -0
  67. data/lib/feed_tools/vendor/html5/lib/html5/treewalkers/rexml.rb +48 -0
  68. data/lib/feed_tools/vendor/html5/lib/html5/treewalkers/simpletree.rb +48 -0
  69. data/lib/feed_tools/vendor/html5/lib/html5/version.rb +3 -0
  70. data/lib/feed_tools/vendor/html5/testdata/encoding/chardet/test_big5.txt +51 -0
  71. data/lib/feed_tools/vendor/html5/testdata/encoding/test-yahoo-jp.dat +10 -0
  72. data/lib/feed_tools/vendor/html5/testdata/encoding/tests1.dat +394 -0
  73. data/lib/feed_tools/vendor/html5/testdata/encoding/tests2.dat +81 -0
  74. data/lib/feed_tools/vendor/html5/testdata/sanitizer/tests1.dat +416 -0
  75. data/lib/feed_tools/vendor/html5/testdata/serializer/core.test +104 -0
  76. data/lib/feed_tools/vendor/html5/testdata/serializer/injectmeta.test +65 -0
  77. data/lib/feed_tools/vendor/html5/testdata/serializer/optionaltags.test +900 -0
  78. data/lib/feed_tools/vendor/html5/testdata/serializer/options.test +60 -0
  79. data/lib/feed_tools/vendor/html5/testdata/serializer/whitespace.test +51 -0
  80. data/lib/feed_tools/vendor/html5/testdata/sites/google-results.htm +1 -0
  81. data/lib/feed_tools/vendor/html5/testdata/sites/python-ref-import.htm +1 -0
  82. data/lib/feed_tools/vendor/html5/testdata/sites/web-apps-old.htm +1 -0
  83. data/lib/feed_tools/vendor/html5/testdata/sites/web-apps.htm +34275 -0
  84. data/lib/feed_tools/vendor/html5/testdata/sniffer/htmlOrFeed.json +43 -0
  85. data/lib/feed_tools/vendor/html5/testdata/tokenizer/contentModelFlags.test +48 -0
  86. data/lib/feed_tools/vendor/html5/testdata/tokenizer/entities.test +2339 -0
  87. data/lib/feed_tools/vendor/html5/testdata/tokenizer/escapeFlag.test +21 -0
  88. data/lib/feed_tools/vendor/html5/testdata/tokenizer/test1.test +172 -0
  89. data/lib/feed_tools/vendor/html5/testdata/tokenizer/test2.test +129 -0
  90. data/lib/feed_tools/vendor/html5/testdata/tokenizer/test3.test +367 -0
  91. data/lib/feed_tools/vendor/html5/testdata/tokenizer/test4.test +198 -0
  92. data/lib/feed_tools/vendor/html5/testdata/tree-construction/tests1.dat +1950 -0
  93. data/lib/feed_tools/vendor/html5/testdata/tree-construction/tests2.dat +773 -0
  94. data/lib/feed_tools/vendor/html5/testdata/tree-construction/tests3.dat +270 -0
  95. data/lib/feed_tools/vendor/html5/testdata/tree-construction/tests4.dat +60 -0
  96. data/lib/feed_tools/vendor/html5/testdata/tree-construction/tests5.dat +175 -0
  97. data/lib/feed_tools/vendor/html5/testdata/tree-construction/tests6.dat +196 -0
  98. data/lib/feed_tools/vendor/html5/testdata/validator/attributes.test +1035 -0
  99. data/lib/feed_tools/vendor/html5/testdata/validator/base-href-attribute.test +787 -0
  100. data/lib/feed_tools/vendor/html5/testdata/validator/base-target-attribute.test +35 -0
  101. data/lib/feed_tools/vendor/html5/testdata/validator/blockquote-cite-attribute.test +7 -0
  102. data/lib/feed_tools/vendor/html5/testdata/validator/classattribute.test +152 -0
  103. data/lib/feed_tools/vendor/html5/testdata/validator/contenteditableattribute.test +59 -0
  104. data/lib/feed_tools/vendor/html5/testdata/validator/contextmenuattribute.test +115 -0
  105. data/lib/feed_tools/vendor/html5/testdata/validator/dirattribute.test +59 -0
  106. data/lib/feed_tools/vendor/html5/testdata/validator/draggableattribute.test +63 -0
  107. data/lib/feed_tools/vendor/html5/testdata/validator/html-xmlns-attribute.test +23 -0
  108. data/lib/feed_tools/vendor/html5/testdata/validator/idattribute.test +115 -0
  109. data/lib/feed_tools/vendor/html5/testdata/validator/inputattributes.test +2795 -0
  110. data/lib/feed_tools/vendor/html5/testdata/validator/irrelevantattribute.test +63 -0
  111. data/lib/feed_tools/vendor/html5/testdata/validator/langattribute.test +5579 -0
  112. data/lib/feed_tools/vendor/html5/testdata/validator/li-value-attribute.test +7 -0
  113. data/lib/feed_tools/vendor/html5/testdata/validator/link-href-attribute.test +7 -0
  114. data/lib/feed_tools/vendor/html5/testdata/validator/link-hreflang-attribute.test +7 -0
  115. data/lib/feed_tools/vendor/html5/testdata/validator/link-rel-attribute.test +271 -0
  116. data/lib/feed_tools/vendor/html5/testdata/validator/ol-start-attribute.test +7 -0
  117. data/lib/feed_tools/vendor/html5/testdata/validator/starttags.test +375 -0
  118. data/lib/feed_tools/vendor/html5/testdata/validator/style-scoped-attribute.test +7 -0
  119. data/lib/feed_tools/vendor/html5/testdata/validator/tabindexattribute.test +79 -0
  120. data/lib/feed_tools/vendor/html5/tests/preamble.rb +72 -0
  121. data/lib/feed_tools/vendor/html5/tests/test_encoding.rb +35 -0
  122. data/lib/feed_tools/vendor/html5/tests/test_lxp.rb +279 -0
  123. data/lib/feed_tools/vendor/html5/tests/test_parser.rb +68 -0
  124. data/lib/feed_tools/vendor/html5/tests/test_sanitizer.rb +142 -0
  125. data/lib/feed_tools/vendor/html5/tests/test_serializer.rb +68 -0
  126. data/lib/feed_tools/vendor/html5/tests/test_sniffer.rb +27 -0
  127. data/lib/feed_tools/vendor/html5/tests/test_stream.rb +62 -0
  128. data/lib/feed_tools/vendor/html5/tests/test_tokenizer.rb +94 -0
  129. data/lib/feed_tools/vendor/html5/tests/test_treewalkers.rb +135 -0
  130. data/lib/feed_tools/vendor/html5/tests/test_validator.rb +31 -0
  131. data/lib/feed_tools/vendor/html5/tests/tokenizer_test_parser.rb +63 -0
  132. data/lib/feed_tools/vendor/uri.rb +781 -0
  133. data/lib/feed_tools/version.rb +1 -1
  134. data/rakefile +27 -6
  135. data/test/unit/atom_test.rb +298 -210
  136. data/test/unit/helper_test.rb +7 -12
  137. data/test/unit/rdf_test.rb +51 -1
  138. data/test/unit/rss_test.rb +13 -3
  139. metadata +239 -116
  140. data/lib/feed_tools/vendor/htree.rb +0 -97
  141. data/lib/feed_tools/vendor/htree/container.rb +0 -10
  142. data/lib/feed_tools/vendor/htree/context.rb +0 -67
  143. data/lib/feed_tools/vendor/htree/display.rb +0 -27
  144. data/lib/feed_tools/vendor/htree/doc.rb +0 -149
  145. data/lib/feed_tools/vendor/htree/elem.rb +0 -262
  146. data/lib/feed_tools/vendor/htree/encoder.rb +0 -163
  147. data/lib/feed_tools/vendor/htree/equality.rb +0 -218
  148. data/lib/feed_tools/vendor/htree/extract_text.rb +0 -37
  149. data/lib/feed_tools/vendor/htree/fstr.rb +0 -33
  150. data/lib/feed_tools/vendor/htree/gencode.rb +0 -97
  151. data/lib/feed_tools/vendor/htree/htmlinfo.rb +0 -672
  152. data/lib/feed_tools/vendor/htree/inspect.rb +0 -108
  153. data/lib/feed_tools/vendor/htree/leaf.rb +0 -94
  154. data/lib/feed_tools/vendor/htree/loc.rb +0 -367
  155. data/lib/feed_tools/vendor/htree/modules.rb +0 -48
  156. data/lib/feed_tools/vendor/htree/name.rb +0 -124
  157. data/lib/feed_tools/vendor/htree/output.rb +0 -207
  158. data/lib/feed_tools/vendor/htree/parse.rb +0 -409
  159. data/lib/feed_tools/vendor/htree/raw_string.rb +0 -124
  160. data/lib/feed_tools/vendor/htree/regexp-util.rb +0 -15
  161. data/lib/feed_tools/vendor/htree/rexml.rb +0 -130
  162. data/lib/feed_tools/vendor/htree/scan.rb +0 -166
  163. data/lib/feed_tools/vendor/htree/tag.rb +0 -111
  164. data/lib/feed_tools/vendor/htree/template.rb +0 -909
  165. data/lib/feed_tools/vendor/htree/text.rb +0 -115
  166. data/lib/feed_tools/vendor/htree/traverse.rb +0 -465
@@ -0,0 +1,270 @@
1
+ #data
2
+ <head></head><style></style>
3
+ #errors
4
+ No DOCTYPE
5
+ <style> in after-head mode
6
+ #document
7
+ | <html>
8
+ | <head>
9
+ | <style>
10
+ | <body>
11
+
12
+ #data
13
+ <head></head><script></script>
14
+ #errors
15
+ No DOCTYPE
16
+ <script> in after-head mode
17
+ #document
18
+ | <html>
19
+ | <head>
20
+ | <script>
21
+ | <body>
22
+
23
+ #data
24
+ <head></head><!-- --><style></style><!-- --><script></script>
25
+ #errors
26
+ No DOCTYPE
27
+ <style> in after-head mode
28
+ #document
29
+ | <html>
30
+ | <head>
31
+ | <style>
32
+ | <script>
33
+ | <!-- -->
34
+ | <!-- -->
35
+ | <body>
36
+
37
+ #data
38
+ <head></head><!-- -->x<style></style><!-- --><script></script>
39
+ #errors
40
+ No DOCTYPE
41
+ #document
42
+ | <html>
43
+ | <head>
44
+ | <!-- -->
45
+ | <body>
46
+ | "x"
47
+ | <style>
48
+ | <!-- -->
49
+ | <script>
50
+
51
+ #data
52
+ <!DOCTYPE htML><html><head></head><body><pre>
53
+ </pre></body></html>
54
+ #errors
55
+ #document
56
+ | <!DOCTYPE htML>
57
+ | <html>
58
+ | <head>
59
+ | <body>
60
+ | <pre>
61
+
62
+ #data
63
+ <!DOCTYPE htML><html><head></head><body><pre>
64
+ foo</pre></body></html>
65
+ #errors
66
+ #document
67
+ | <!DOCTYPE htML>
68
+ | <html>
69
+ | <head>
70
+ | <body>
71
+ | <pre>
72
+ | "foo"
73
+
74
+ #data
75
+ <!DOCTYPE htML><html><head></head><body><pre>
76
+
77
+ foo</pre></body></html>
78
+ #errors
79
+ #document
80
+ | <!DOCTYPE htML>
81
+ | <html>
82
+ | <head>
83
+ | <body>
84
+ | <pre>
85
+ | "
86
+ foo"
87
+
88
+ #data
89
+ <!DOCTYPE htML><html><head></head><body><pre>
90
+ foo
91
+ </pre></body></html>
92
+ #errors
93
+ #document
94
+ | <!DOCTYPE htML>
95
+ | <html>
96
+ | <head>
97
+ | <body>
98
+ | <pre>
99
+ | "foo
100
+ "
101
+
102
+ #data
103
+ <!DOCTYPE htML><html><head></head><body><pre>x</pre><span>
104
+ </span></body></html>
105
+ #errors
106
+ #document
107
+ | <!DOCTYPE htML>
108
+ | <html>
109
+ | <head>
110
+ | <body>
111
+ | <pre>
112
+ | "x"
113
+ | <span>
114
+ | "
115
+ "
116
+
117
+ #data
118
+ <!DOCTYPE htML><html><head></head><body><pre>x
119
+ y</pre></body></html>
120
+ #errors
121
+ #document
122
+ | <!DOCTYPE htML>
123
+ | <html>
124
+ | <head>
125
+ | <body>
126
+ | <pre>
127
+ | "x
128
+ y"
129
+
130
+ #data
131
+ <!DOCTYPE htML><html><head></head><body><pre>x<div>
132
+ y</pre></body></html>
133
+ #errors
134
+ End tag <pre> seen too early. Expected other end tag.
135
+ #document
136
+ | <!DOCTYPE htML>
137
+ | <html>
138
+ | <head>
139
+ | <body>
140
+ | <pre>
141
+ | "x"
142
+ | <div>
143
+ | "
144
+ y"
145
+
146
+ #data
147
+ <!DOCTYPE htML><HTML><META><HEAD></HEAD></HTML>
148
+ #errors
149
+ Unexpected start tag HEAD in HEAD. Ignored.
150
+ #document
151
+ | <!DOCTYPE htML>
152
+ | <html>
153
+ | <head>
154
+ | <meta>
155
+ | <body>
156
+
157
+ #data
158
+ <!DOCTYPE htML><HTML><HEAD><head></HEAD></HTML>
159
+ #errors
160
+ Unexpected start tag HEAD in HEAD. Ignored.
161
+ #document
162
+ | <!DOCTYPE htML>
163
+ | <html>
164
+ | <head>
165
+ | <body>
166
+
167
+ #data
168
+ <textarea>foo<span>bar</span><i>baz
169
+ #errors
170
+ Unexpected start tag. Expected DOCTYPE.
171
+ Unexpected end of file.
172
+ #document
173
+ | <html>
174
+ | <head>
175
+ | <body>
176
+ | <textarea>
177
+ | "foo<span>bar</span><i>baz"
178
+
179
+ #data
180
+ <title>foo<span>bar</em><i>baz
181
+ #errors
182
+ Unexpected start tag. Expected DOCTYPE.
183
+ Unexpected end of file.
184
+ #document
185
+ | <html>
186
+ | <head>
187
+ | <title>
188
+ | "foo<span>bar</em><i>baz"
189
+ | <body>
190
+
191
+ #data
192
+ <!DOCTYPE htML><textarea>
193
+ </textarea>
194
+ #errors
195
+ #document
196
+ | <!DOCTYPE htML>
197
+ | <html>
198
+ | <head>
199
+ | <body>
200
+ | <textarea>
201
+
202
+ #data
203
+ <!DOCTYPE htML><textarea>
204
+ foo</textarea>
205
+ #errors
206
+ #document
207
+ | <!DOCTYPE htML>
208
+ | <html>
209
+ | <head>
210
+ | <body>
211
+ | <textarea>
212
+ | "foo"
213
+
214
+ #data
215
+ <!DOCTYPE htML><textarea>
216
+
217
+ foo</textarea>
218
+ #errors
219
+ #document
220
+ | <!DOCTYPE htML>
221
+ | <html>
222
+ | <head>
223
+ | <body>
224
+ | <textarea>
225
+ | "
226
+ foo"
227
+
228
+ #data
229
+ <!DOCTYPE htML><html><head></head><body><ul><li><div><p><li></ul></body></html>
230
+ #errors
231
+ Missing end tag (div)
232
+ #document
233
+ | <!DOCTYPE htML>
234
+ | <html>
235
+ | <head>
236
+ | <body>
237
+ | <ul>
238
+ | <li>
239
+ | <div>
240
+ | <p>
241
+ | <li>
242
+
243
+ #data
244
+ <!doctype html><nobr><nobr><nobr>
245
+ #errors
246
+ Unexpected <nobr> tag.
247
+ Unexpected <nobr> tag.
248
+ Unexpected end of file.
249
+ #document
250
+ | <!DOCTYPE html>
251
+ | <html>
252
+ | <head>
253
+ | <body>
254
+ | <nobr>
255
+ | <nobr>
256
+ | <nobr>
257
+
258
+ #data
259
+ <!doctype html><nobr><nobr></nobr><nobr>
260
+ #errors
261
+ Unexpected <nobr> tag.
262
+ Unexpected end of file.
263
+ #document
264
+ | <!DOCTYPE html>
265
+ | <html>
266
+ | <head>
267
+ | <body>
268
+ | <nobr>
269
+ | <nobr>
270
+ | <nobr>
@@ -0,0 +1,60 @@
1
+ #data
2
+ direct div content
3
+ #errors
4
+ #document-fragment
5
+ div
6
+ #document
7
+ | "direct div content"
8
+
9
+ #data
10
+ direct textarea content
11
+ #errors
12
+ #document-fragment
13
+ textarea
14
+ #document
15
+ | "direct textarea content"
16
+
17
+ #data
18
+ textarea content with <em>pseudo</em> <foo>markup
19
+ #errors
20
+ #document-fragment
21
+ textarea
22
+ #document
23
+ | "textarea content with <em>pseudo</em> <foo>markup"
24
+
25
+ #data
26
+ this is &#x0043;DATA inside a <style> element
27
+ #errors
28
+ #document-fragment
29
+ style
30
+ #document
31
+ | "this is &#x0043;DATA inside a <style> element"
32
+
33
+ #data
34
+ </plaintext>
35
+ #errors
36
+ #document-fragment
37
+ plaintext
38
+ #document
39
+ | "</plaintext>"
40
+
41
+ #data
42
+ setting html's innerHTML
43
+ #errors
44
+ XXX innerHTML EOF
45
+ #document-fragment
46
+ html
47
+ #document
48
+ | <head>
49
+ | <body>
50
+ | "setting html's innerHTML"
51
+
52
+ #data
53
+ <title>setting head's innerHTML</title>
54
+ #errors
55
+ Unexpected title element that belongs in head.
56
+ #document-fragment
57
+ head
58
+ #document
59
+ | <title>
60
+ | "setting head's innerHTML"
@@ -0,0 +1,175 @@
1
+ #data
2
+ <style> <!-- </style>x
3
+ #errors
4
+ No DOCTYPE
5
+ Unexpected end of file
6
+ #document
7
+ | <html>
8
+ | <head>
9
+ | <style>
10
+ | " <!-- </style>x"
11
+ | <body>
12
+
13
+ #data
14
+ <style> <!-- </style> --> </style>x
15
+ #errors
16
+ No DOCTYPE
17
+ #document
18
+ | <html>
19
+ | <head>
20
+ | <style>
21
+ | " <!-- </style> --> "
22
+ | <body>
23
+ | "x"
24
+
25
+ #data
26
+ <style> <!--> </style>x
27
+ #errors
28
+ No DOCTYPE
29
+ #document
30
+ | <html>
31
+ | <head>
32
+ | <style>
33
+ | " <!--> "
34
+ | <body>
35
+ | "x"
36
+
37
+ #data
38
+ <style> <!---> </style>x
39
+ #errors
40
+ No DOCTYPE
41
+ #document
42
+ | <html>
43
+ | <head>
44
+ | <style>
45
+ | " <!---> "
46
+ | <body>
47
+ | "x"
48
+
49
+ #data
50
+ <iframe> <!---> </iframe>x
51
+ #errors
52
+ No DOCTYPE
53
+ #document
54
+ | <html>
55
+ | <head>
56
+ | <body>
57
+ | <iframe>
58
+ | " <!---> "
59
+ | "x"
60
+
61
+ #data
62
+ <iframe> <!--- </iframe>->x</iframe> --> </iframe>x
63
+ #errors
64
+ No DOCTYPE
65
+ #document
66
+ | <html>
67
+ | <head>
68
+ | <body>
69
+ | <iframe>
70
+ | " <!--- </iframe>->x</iframe> --> "
71
+ | "x"
72
+
73
+ #data
74
+ <script> <!-- </script> --> </script>x
75
+ #errors
76
+ No DOCTYPE
77
+ #document
78
+ | <html>
79
+ | <head>
80
+ | <script>
81
+ | " <!-- </script> --> "
82
+ | <body>
83
+ | "x"
84
+
85
+ #data
86
+ <title> <!-- </title> --> </title>x
87
+ #errors
88
+ No DOCTYPE
89
+ #document
90
+ | <html>
91
+ | <head>
92
+ | <title>
93
+ | " <!-- </title> --> "
94
+ | <body>
95
+ | "x"
96
+
97
+ #data
98
+ <textarea> <!--- </textarea>->x</textarea> --> </textarea>x
99
+ #errors
100
+ No DOCTYPE
101
+ #document
102
+ | <html>
103
+ | <head>
104
+ | <body>
105
+ | <textarea>
106
+ | " <!--- </textarea>->x</textarea> --> "
107
+ | "x"
108
+
109
+ #data
110
+ <style> <!</-- </style>x
111
+ #errors
112
+ No DOCTYPE
113
+ #document
114
+ | <html>
115
+ | <head>
116
+ | <style>
117
+ | " <!</-- "
118
+ | <body>
119
+ | "x"
120
+
121
+ #data
122
+ <xmp> <!-- > --> </xmp>
123
+ #errors
124
+ No DOCTYPE
125
+ #document
126
+ | <html>
127
+ | <head>
128
+ | <body>
129
+ | <xmp>
130
+ | " <!-- > --> "
131
+
132
+ #data
133
+ <title>&amp;</title>
134
+ #errors
135
+ No DOCTYPE
136
+ #document
137
+ | <html>
138
+ | <head>
139
+ | <title>
140
+ | "&"
141
+ | <body>
142
+
143
+ #data
144
+ <title><!--&amp;--></title>
145
+ #errors
146
+ No DOCTYPE
147
+ #document
148
+ | <html>
149
+ | <head>
150
+ | <title>
151
+ | "<!--&amp;-->"
152
+ | <body>
153
+
154
+ #data
155
+ <title><!--</title>
156
+ #errors
157
+ No DOCTYPE
158
+ Unexpected EOF
159
+ #document
160
+ | <html>
161
+ | <head>
162
+ | <title>
163
+ | "<!--</title>"
164
+ | <body>
165
+
166
+ #data
167
+ <noscript><!--</noscript>--></noscript>
168
+ #errors
169
+ No DOCTYPE
170
+ #document
171
+ | <html>
172
+ | <head>
173
+ | <noscript>
174
+ | "<!--</noscript>-->"
175
+ | <body>