feedtools 0.2.26 → 0.2.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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,35 @@
1
+ {"tests": [
2
+
3
+ {"description": "valid base target attribute '_self'",
4
+ "input": "<base target=_self>",
5
+ "fail-if": "invalid-browsing-context"},
6
+
7
+ {"description": "valid base target attribute '_parent'",
8
+ "input": "<base target=_parent>",
9
+ "fail-if": "invalid-browsing-context"},
10
+
11
+ {"description": "valid base target attribute '_top'",
12
+ "input": "<base target=_top>",
13
+ "fail-if": "invalid-browsing-context"},
14
+
15
+ {"description": "valid base target attribute '_blank'",
16
+ "input": "<base target=_blank>",
17
+ "fail-if": "invalid-browsing-context"},
18
+
19
+ {"description": "valid base target attribute 'foo'",
20
+ "input": "<base target=foo>",
21
+ "fail-if": "invalid-browsing-context"},
22
+
23
+ {"description": "base target attribute may be blank",
24
+ "input": "<base target>",
25
+ "fail-if": "invalid-browsing-context"},
26
+
27
+ {"description": "invalid base target attribute '_'",
28
+ "input": "<base target=_>",
29
+ "fail-unless": "invalid-browsing-context"},
30
+
31
+ {"description": "invalid base target attribute '_foo'",
32
+ "input": "<base target=_foo>",
33
+ "fail-unless": "invalid-browsing-context"}
34
+
35
+ ]}
@@ -0,0 +1,7 @@
1
+ {"tests": [
2
+
3
+ {"description": "blockquote cite contains invalid URI due to space in domain",
4
+ "input": "<blockquote cite='http://www.example. com/'",
5
+ "fail-unless": "invalid-uri-char"}
6
+
7
+ ]}
@@ -0,0 +1,152 @@
1
+ {"tests": [
2
+
3
+ {"description": "valid single class attribute value",
4
+ "input": "<span class=a>",
5
+ "fail-if": "invalid-attribute-value"},
6
+
7
+ {"description": "valid single class attribute value with leading space",
8
+ "input": "<span class=' a'>",
9
+ "fail-if": "invalid-attribute-value"},
10
+
11
+ {"description": "valid single class attribute value with trailing space",
12
+ "input": "<span class='a '>",
13
+ "fail-if": "invalid-attribute-value"},
14
+
15
+ {"description": "valid single class attribute value with leading and trailing space",
16
+ "input": "<span class=' a '>",
17
+ "fail-if": "invalid-attribute-value"},
18
+
19
+ {"description": "valid single class attribute value with leading tab",
20
+ "input": "<span class='\ta'>",
21
+ "fail-if": "invalid-attribute-value"},
22
+
23
+ {"description": "valid single class attribute value with trailing tab",
24
+ "input": "<span class='a\t'>",
25
+ "fail-if": "invalid-attribute-value"},
26
+
27
+ {"description": "valid single class attribute value with leading and trailing tab",
28
+ "input": "<span class='\ta\t'>",
29
+ "fail-if": "invalid-attribute-value"},
30
+
31
+ {"description": "valid single class attribute value with leading LF",
32
+ "input": "<span class='\na'>",
33
+ "fail-if": "invalid-attribute-value"},
34
+
35
+ {"description": "valid single class attribute value with trailing LF",
36
+ "input": "<span class='a\n'>",
37
+ "fail-if": "invalid-attribute-value"},
38
+
39
+ {"description": "valid single class attribute value with leading and trailing LF",
40
+ "input": "<span class='\na\n'>",
41
+ "fail-if": "invalid-attribute-value"},
42
+
43
+ {"description": "valid single class attribute value with leading LT",
44
+ "input": "<span class='\u000Ba'>",
45
+ "fail-if": "invalid-attribute-value"},
46
+
47
+ {"description": "valid single class attribute value with trailing LT",
48
+ "input": "<span class='a\u000B'>",
49
+ "fail-if": "invalid-attribute-value"},
50
+
51
+ {"description": "valid single class attribute value with leading and trailing LT",
52
+ "input": "<span class='\u000Ba\u000B'>",
53
+ "fail-if": "invalid-attribute-value"},
54
+
55
+ {"description": "valid single class attribute value with leading FF",
56
+ "input": "<span class='\u000Ca'>",
57
+ "fail-if": "invalid-attribute-value"},
58
+
59
+ {"description": "valid single class attribute value with trailing FF",
60
+ "input": "<span class='a\u000C'>",
61
+ "fail-if": "invalid-attribute-value"},
62
+
63
+ {"description": "valid single class attribute value with leading and trailing FF",
64
+ "input": "<span class='\u000Ca\u000C'>",
65
+ "fail-if": "invalid-attribute-value"},
66
+
67
+ {"description": "valid single class attribute value with leading CR",
68
+ "input": "<span class='\ra'>",
69
+ "fail-if": "invalid-attribute-value"},
70
+
71
+ {"description": "valid single class attribute value with trailing CR",
72
+ "input": "<span class='a\r'>",
73
+ "fail-if": "invalid-attribute-value"},
74
+
75
+ {"description": "valid single class attribute value with leading and trailing CR",
76
+ "input": "<span class='\ra\r'>",
77
+ "fail-if": "invalid-attribute-value"},
78
+
79
+ {"description": "valid double class attribute value separated by space",
80
+ "input": "<span class='a b'>",
81
+ "fail-if": "invalid-attribute-value"},
82
+
83
+ {"description": "valid double class attribute value separated by tab",
84
+ "input": "<span class='a\tb'>",
85
+ "fail-if": "invalid-attribute-value"},
86
+
87
+ {"description": "valid double class attribute value separated by LF",
88
+ "input": "<span class='a\nb'>",
89
+ "fail-if": "invalid-attribute-value"},
90
+
91
+ {"description": "valid double class attribute value separated by LT",
92
+ "input": "<span class='a\u000Bb'>",
93
+ "fail-if": "invalid-attribute-value"},
94
+
95
+ {"description": "valid double class attribute value separated by FF",
96
+ "input": "<span class='a\u000Cb'>",
97
+ "fail-if": "invalid-attribute-value"},
98
+
99
+ {"description": "valid double class attribute value separated by CR",
100
+ "input": "<span class='a\rb'>",
101
+ "fail-if": "invalid-attribute-value"},
102
+
103
+ {"description": "invalid duplicated class attribute value separated by space",
104
+ "input": "<span class='a a'>",
105
+ "fail-unless": "invalid-attribute-value"},
106
+
107
+ {"description": "invalid duplicated class attribute value separated by tab",
108
+ "input": "<span class='a\ta'>",
109
+ "fail-unless": "invalid-attribute-value"},
110
+
111
+ {"description": "invalid duplicated class attribute value separated by LF",
112
+ "input": "<span class='a\na'>",
113
+ "fail-unless": "invalid-attribute-value"},
114
+
115
+ {"description": "invalid duplicated class attribute value separated by LT",
116
+ "input": "<span class='a\u000Ba'>",
117
+ "fail-unless": "invalid-attribute-value"},
118
+
119
+ {"description": "invalid duplicated class attribute value separated by FF",
120
+ "input": "<span class='a\u000Ca'>",
121
+ "fail-unless": "invalid-attribute-value"},
122
+
123
+ {"description": "invalid duplicated class attribute value separated by CR",
124
+ "input": "<span class='a\ra'>",
125
+ "fail-unless": "duplicate-value-in-token-list"},
126
+
127
+ {"description": "invalid duplicated class attribute value separated by space",
128
+ "input": "<span class='a a'>",
129
+ "fail-unless": "duplicate-value-in-token-list"},
130
+
131
+ {"description": "invalid duplicated class attribute value separated by tab",
132
+ "input": "<span class='a\ta'>",
133
+ "fail-unless": "duplicate-value-in-token-list"},
134
+
135
+ {"description": "invalid duplicated class attribute value separated by LF",
136
+ "input": "<span class='a\na'>",
137
+ "fail-unless": "duplicate-value-in-token-list"},
138
+
139
+ {"description": "invalid duplicated class attribute value separated by LT",
140
+ "input": "<span class='a\u000Ba'>",
141
+ "fail-unless": "duplicate-value-in-token-list"},
142
+
143
+ {"description": "invalid duplicated class attribute value separated by FF",
144
+ "input": "<span class='a\u000Ca'>",
145
+ "fail-unless": "duplicate-value-in-token-list"},
146
+
147
+ {"description": "invalid duplicated class attribute value separated by CR",
148
+ "input": "<span class='a\ra'>",
149
+ "fail-unless": "duplicate-value-in-token-list"}
150
+
151
+ ]}
152
+
@@ -0,0 +1,59 @@
1
+ {"tests": [
2
+
3
+ {"description": "valid contenteditable attribute value 'true'",
4
+ "input": "<span contenteditable=true>",
5
+ "fail-if": "invalid-attribute-value"},
6
+
7
+ {"description": "valid contenteditable attribute value 'TRUE'",
8
+ "input": "<span contenteditable=TRUE>",
9
+ "fail-if": "invalid-attribute-value"},
10
+
11
+ {"description": "valid contenteditable attribute value 'TrUe'",
12
+ "input": "<span contenteditable=TrUe>",
13
+ "fail-if": "invalid-attribute-value"},
14
+
15
+ {"description": "valid contenteditable attribute value 'false'",
16
+ "input": "<span contenteditable=false>",
17
+ "fail-if": "invalid-attribute-value"},
18
+
19
+ {"description": "valid contenteditable attribute value 'FALSE'",
20
+ "input": "<span contenteditable=FALSE>",
21
+ "fail-if": "invalid-attribute-value"},
22
+
23
+ {"description": "valid contenteditable attribute value 'FalSe'",
24
+ "input": "<span contenteditable=FalSe>",
25
+ "fail-if": "invalid-attribute-value"},
26
+
27
+ {"description": "valid contenteditable attribute value ''",
28
+ "input": "<span contenteditable=''>",
29
+ "fail-if": "invalid-attribute-value"},
30
+
31
+ {"description": "valid contenteditable attribute value (not specified)",
32
+ "input": "<span contenteditable>",
33
+ "fail-if": "invalid-attribute-value"},
34
+
35
+ {"description": "invalid contenteditable attribute value 'foo'",
36
+ "input": "<span contenteditable=foo>",
37
+ "fail-unless": "invalid-enumerated-value"},
38
+
39
+ {"description": "invalid contenteditable attribute value '0'",
40
+ "input": "<span contenteditable=0>",
41
+ "fail-unless": "invalid-enumerated-value"},
42
+
43
+ {"description": "invalid contenteditable attribute value '1'",
44
+ "input": "<span contenteditable=1>",
45
+ "fail-unless": "invalid-enumerated-value"},
46
+
47
+ {"description": "invalid contenteditable attribute value 'yes'",
48
+ "input": "<span contenteditable=yes>",
49
+ "fail-unless": "invalid-enumerated-value"},
50
+
51
+ {"description": "invalid contenteditable attribute value 'no'",
52
+ "input": "<span contenteditable=no>",
53
+ "fail-unless": "invalid-enumerated-value"},
54
+
55
+ {"description": "invalid contenteditable attribute value 'inherit'",
56
+ "input": "<span contenteditable=inherit>",
57
+ "fail-unless": "invalid-enumerated-value"}
58
+
59
+ ]}
@@ -0,0 +1,115 @@
1
+ {"tests": [
2
+
3
+ {"description": "contextmenu points to valid ID earlier",
4
+ "input": "<menu id=a><span contextmenu=a>",
5
+ "fail-if": "id-does-not-exist"},
6
+
7
+ {"description": "contextmenu points to valid ID later",
8
+ "input": "<span contextmenu=a><menu id=a>",
9
+ "fail-if": "id-does-not-exist"},
10
+
11
+ {"description": "contextmenu points to non-existent ID",
12
+ "input": "<span contextmenu=a>",
13
+ "fail-unless": "id-does-not-exist"},
14
+
15
+ {"description": "contextmenu points to ID on non-menu element",
16
+ "input": "<span id=a><span contextmenu=a>",
17
+ "fail-unless": "contextmenu-must-point-to-menu"},
18
+
19
+ {"description": "uppercase contextmenu points to ID on non-menu element",
20
+ "input": "<span id=a><span CONTEXTMENU=a>",
21
+ "fail-unless": "contextmenu-must-point-to-menu"},
22
+
23
+ {"description": "valid ID 'a'",
24
+ "input": "<span contextmenu=a>",
25
+ "fail-if": "invalid-attribute-value"},
26
+
27
+ {"description": "valid ID '1'",
28
+ "input": "<span contextmenu=1>",
29
+ "fail-if": "invalid-attribute-value"},
30
+
31
+ {"description": "wacky but valid ID",
32
+ "input": "<span contextmenu='<html><head><title>a</title></head><body><p>b</p></body></html>'>",
33
+ "fail-if": "invalid-attribute-value"},
34
+
35
+ {"description": "invalid blank ID",
36
+ "input": "<span id>",
37
+ "fail-unless": "attribute-value-can-not-be-blank"},
38
+
39
+ {"description": "invalid blank ID with quotes",
40
+ "input": "<span contextmenu=''>",
41
+ "fail-unless": "attribute-value-can-not-be-blank"},
42
+
43
+ {"description": "invalid ID because of leading space",
44
+ "input": "<span contextmenu=' a'>",
45
+ "fail-unless": "space-in-id"},
46
+
47
+ {"description": "invalid ID because of trailing space",
48
+ "input": "<span contextmenu='a '>",
49
+ "fail-unless": "space-in-id"},
50
+
51
+ {"description": "invalid ID because of space in value",
52
+ "input": "<span contextmenu='a b'>",
53
+ "fail-unless": "space-in-id"},
54
+
55
+ {"description": "invalid ID because of leading tab",
56
+ "input": "<span contextmenu='\ta'>",
57
+ "fail-unless": "space-in-id"},
58
+
59
+ {"description": "invalid ID because of trailing tab",
60
+ "input": "<span contextmenu='a\t'>",
61
+ "fail-unless": "space-in-id"},
62
+
63
+ {"description": "invalid ID because of tab in value",
64
+ "input": "<span contextmenu='a\tb'>",
65
+ "fail-unless": "space-in-id"},
66
+
67
+ {"description": "invalid ID because of leading LF",
68
+ "input": "<span contextmenu='\na'>",
69
+ "fail-unless": "space-in-id"},
70
+
71
+ {"description": "invalid ID because of trailing LF",
72
+ "input": "<span contextmenu='a\n'>",
73
+ "fail-unless": "space-in-id"},
74
+
75
+ {"description": "invalid ID because of LF in value",
76
+ "input": "<span contextmenu='a\nb'>",
77
+ "fail-unless": "space-in-id"},
78
+
79
+ {"description": "invalid ID because of leading LT",
80
+ "input": "<span contextmenu='\u000Ba'>",
81
+ "fail-unless": "space-in-id"},
82
+
83
+ {"description": "invalid ID because of trailing LT",
84
+ "input": "<span contextmenu='a\u000B'>",
85
+ "fail-unless": "space-in-id"},
86
+
87
+ {"description": "invalid ID because of LT in value",
88
+ "input": "<span contextmenu='a\u000Bb'>",
89
+ "fail-unless": "space-in-id"},
90
+
91
+ {"description": "invalid ID because of leading FF",
92
+ "input": "<span contextmenu='\u000Ca'>",
93
+ "fail-unless": "space-in-id"},
94
+
95
+ {"description": "invalid ID because of trailing FF",
96
+ "input": "<span contextmenu='a\u000C'>",
97
+ "fail-unless": "space-in-id"},
98
+
99
+ {"description": "invalid ID because of FF in value",
100
+ "input": "<span contextmenu='a\u000Cb'>",
101
+ "fail-unless": "space-in-id"},
102
+
103
+ {"description": "invalid ID because of leading CR",
104
+ "input": "<span contextmenu='\ra'>",
105
+ "fail-unless": "space-in-id"},
106
+
107
+ {"description": "invalid ID because of trailing CR",
108
+ "input": "<span contextmenu='a\r'>",
109
+ "fail-unless": "space-in-id"},
110
+
111
+ {"description": "invalid ID because of CR in value",
112
+ "input": "<span contextmenu='a\rb'>",
113
+ "fail-unless": "space-in-id"}
114
+
115
+ ]}
@@ -0,0 +1,59 @@
1
+ {"tests": [
2
+
3
+ {"description": "valid dir attribute value 'ltr'",
4
+ "input": "<span dir=ltr>",
5
+ "fail-if": "invalid-attribute-value"},
6
+
7
+ {"description": "valid dir attribute value 'LTR'",
8
+ "input": "<span dir=LTR>",
9
+ "fail-if": "invalid-attribute-value"},
10
+
11
+ {"description": "valid dir attribute value 'LtR'",
12
+ "input": "<span dir=LtR>",
13
+ "fail-if": "invalid-attribute-value"},
14
+
15
+ {"description": "valid dir attribute value 'rtl'",
16
+ "input": "<span dir=rtl>",
17
+ "fail-if": "invalid-attribute-value"},
18
+
19
+ {"description": "valid dir attribute value 'RTL'",
20
+ "input": "<span dir=RTL>",
21
+ "fail-if": "invalid-attribute-value"},
22
+
23
+ {"description": "valid dir attribute value 'RtL'",
24
+ "input": "<span dir=RtL>",
25
+ "fail-if": "invalid-attribute-value"},
26
+
27
+ {"description": "invalid dir attribute value due to leading space",
28
+ "input": "<span dir=' ltr'>",
29
+ "fail-unless": "invalid-enumerated-value"},
30
+
31
+ {"description": "dir attribute value can not be blank",
32
+ "input": "<span dir>",
33
+ "fail-unless": "attribute-value-can-not-be-blank"},
34
+
35
+ {"description": "dir attribute value can not be blank (with quotes)",
36
+ "input": "<span dir=''>",
37
+ "fail-unless": "attribute-value-can-not-be-blank"},
38
+
39
+ {"description": "invalid dir attribute value 'left'",
40
+ "input": "<span dir=left>",
41
+ "fail-unless": "invalid-enumerated-value"},
42
+
43
+ {"description": "invalid dir attribute value 'right'",
44
+ "input": "<span dir=right>",
45
+ "fail-unless": "invalid-enumerated-value"},
46
+
47
+ {"description": "invalid dir attribute value 'lefttoright'",
48
+ "input": "<span dir=lefttoright>",
49
+ "fail-unless": "invalid-enumerated-value"},
50
+
51
+ {"description": "invalid dir attribute value 'righttoleft'",
52
+ "input": "<span dir=righttoleft>",
53
+ "fail-unless": "invalid-enumerated-value"},
54
+
55
+ {"description": "invalid dir attribute value 'inherit'",
56
+ "input": "<span dir=inherit>",
57
+ "fail-unless": "invalid-enumerated-value"}
58
+
59
+ ]}
@@ -0,0 +1,63 @@
1
+ {"tests": [
2
+
3
+ {"description": "valid draggable attribute value 'true'",
4
+ "input": "<span draggable=true>",
5
+ "fail-if": "invalid-attribute-value"},
6
+
7
+ {"description": "valid draggable attribute value 'TRUE'",
8
+ "input": "<span draggable=TRUE>",
9
+ "fail-if": "invalid-attribute-value"},
10
+
11
+ {"description": "valid draggable attribute value 'TrUe'",
12
+ "input": "<span draggable=TrUe>",
13
+ "fail-if": "invalid-attribute-value"},
14
+
15
+ {"description": "valid draggable attribute value 'false'",
16
+ "input": "<span draggable=false>",
17
+ "fail-if": "invalid-attribute-value"},
18
+
19
+ {"description": "valid draggable attribute value 'FALSE'",
20
+ "input": "<span draggable=FALSE>",
21
+ "fail-if": "invalid-attribute-value"},
22
+
23
+ {"description": "valid draggable attribute value 'FalSe'",
24
+ "input": "<span draggable=FalSe>",
25
+ "fail-if": "invalid-attribute-value"},
26
+
27
+ {"description": "invalid draggable attribute value ''",
28
+ "input": "<span draggable=''>",
29
+ "fail-unless": "attribute-value-can-not-be-blank"},
30
+
31
+ {"description": "valid draggable attribute value (not specified)",
32
+ "input": "<span draggable>",
33
+ "fail-unless": "attribute-value-can-not-be-blank"},
34
+
35
+ {"description": "invalid draggable attribute value 'foo'",
36
+ "input": "<span draggable=foo>",
37
+ "fail-unless": "invalid-enumerated-value"},
38
+
39
+ {"description": "invalid draggable attribute value '0'",
40
+ "input": "<span draggable=0>",
41
+ "fail-unless": "invalid-enumerated-value"},
42
+
43
+ {"description": "invalid draggable attribute value '1'",
44
+ "input": "<span draggable=1>",
45
+ "fail-unless": "invalid-enumerated-value"},
46
+
47
+ {"description": "invalid draggable attribute value 'yes'",
48
+ "input": "<span draggable=yes>",
49
+ "fail-unless": "invalid-enumerated-value"},
50
+
51
+ {"description": "invalid draggable attribute value 'no'",
52
+ "input": "<span draggable=no>",
53
+ "fail-unless": "invalid-enumerated-value"},
54
+
55
+ {"description": "invalid draggable attribute value 'auto'",
56
+ "input": "<span draggable=auto>",
57
+ "fail-unless": "invalid-enumerated-value"},
58
+
59
+ {"description": "invalid draggable attribute value 'inherit'",
60
+ "input": "<span draggable=inherit>",
61
+ "fail-unless": "invalid-enumerated-value"}
62
+
63
+ ]}