PluginProbe ʕ •ᴥ•ʔ
SiteOrigin CSS / 1.1.3
SiteOrigin CSS v1.1.3
1.2.1 1.2.10 1.2.11 1.2.12 1.2.13 1.2.14 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 1.3.0 1.3.1 1.3.2 1.4.0 1.4.1 1.4.2 1.4.3 1.5.0 1.5.1 1.5.10 1.5.11 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.5.9 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 trunk 1.0 1.0.1 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.0.7 1.0.8 1.1 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.2.0
so-css / lib / codemirror / mode / css / test.js
so-css / lib / codemirror / mode / css Last commit date
css.js 9 years ago css.min.js 9 years ago gss.html 10 years ago gss_test.js 10 years ago gss_test.min.js 9 years ago index.html 11 years ago less.html 11 years ago less_test.js 9 years ago less_test.min.js 9 years ago scss.html 11 years ago scss_test.js 9 years ago scss_test.min.js 9 years ago test.js 10 years ago test.min.js 10 years ago
test.js
201 lines
1 // CodeMirror, copyright (c) by Marijn Haverbeke and others
2 // Distributed under an MIT license: http://codemirror.net/LICENSE
3
4 (function() {
5 var mode = CodeMirror.getMode({indentUnit: 2}, "css");
6 function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); }
7
8 // Error, because "foobarhello" is neither a known type or property, but
9 // property was expected (after "and"), and it should be in parentheses.
10 MT("atMediaUnknownType",
11 "[def @media] [attribute screen] [keyword and] [error foobarhello] { }");
12
13 // Soft error, because "foobarhello" is not a known property or type.
14 MT("atMediaUnknownProperty",
15 "[def @media] [attribute screen] [keyword and] ([error foobarhello]) { }");
16
17 // Make sure nesting works with media queries
18 MT("atMediaMaxWidthNested",
19 "[def @media] [attribute screen] [keyword and] ([property max-width]: [number 25px]) { [tag foo] { } }");
20
21 MT("atMediaFeatureValueKeyword",
22 "[def @media] ([property orientation]: [keyword landscape]) { }");
23
24 MT("atMediaUnknownFeatureValueKeyword",
25 "[def @media] ([property orientation]: [error upsidedown]) { }");
26
27 MT("tagSelector",
28 "[tag foo] { }");
29
30 MT("classSelector",
31 "[qualifier .foo-bar_hello] { }");
32
33 MT("idSelector",
34 "[builtin #foo] { [error #foo] }");
35
36 MT("tagSelectorUnclosed",
37 "[tag foo] { [property margin]: [number 0] } [tag bar] { }");
38
39 MT("tagStringNoQuotes",
40 "[tag foo] { [property font-family]: [variable hello] [variable world]; }");
41
42 MT("tagStringDouble",
43 "[tag foo] { [property font-family]: [string \"hello world\"]; }");
44
45 MT("tagStringSingle",
46 "[tag foo] { [property font-family]: [string 'hello world']; }");
47
48 MT("tagColorKeyword",
49 "[tag foo] {",
50 " [property color]: [keyword black];",
51 " [property color]: [keyword navy];",
52 " [property color]: [keyword yellow];",
53 "}");
54
55 MT("tagColorHex3",
56 "[tag foo] { [property background]: [atom #fff]; }");
57
58 MT("tagColorHex4",
59 "[tag foo] { [property background]: [atom #ffff]; }");
60
61 MT("tagColorHex6",
62 "[tag foo] { [property background]: [atom #ffffff]; }");
63
64 MT("tagColorHex8",
65 "[tag foo] { [property background]: [atom #ffffffff]; }");
66
67 MT("tagColorHex5Invalid",
68 "[tag foo] { [property background]: [atom&error #fffff]; }");
69
70 MT("tagColorHexInvalid",
71 "[tag foo] { [property background]: [atom&error #ffg]; }");
72
73 MT("tagNegativeNumber",
74 "[tag foo] { [property margin]: [number -5px]; }");
75
76 MT("tagPositiveNumber",
77 "[tag foo] { [property padding]: [number 5px]; }");
78
79 MT("tagVendor",
80 "[tag foo] { [meta -foo-][property box-sizing]: [meta -foo-][atom border-box]; }");
81
82 MT("tagBogusProperty",
83 "[tag foo] { [property&error barhelloworld]: [number 0]; }");
84
85 MT("tagTwoProperties",
86 "[tag foo] { [property margin]: [number 0]; [property padding]: [number 0]; }");
87
88 MT("tagTwoPropertiesURL",
89 "[tag foo] { [property background]: [atom url]([string //example.com/foo.png]); [property padding]: [number 0]; }");
90
91 MT("indent_tagSelector",
92 "[tag strong], [tag em] {",
93 " [property background]: [atom rgba](",
94 " [number 255], [number 255], [number 0], [number .2]",
95 " );",
96 "}");
97
98 MT("indent_atMedia",
99 "[def @media] {",
100 " [tag foo] {",
101 " [property color]:",
102 " [keyword yellow];",
103 " }",
104 "}");
105
106 MT("indent_comma",
107 "[tag foo] {",
108 " [property font-family]: [variable verdana],",
109 " [atom sans-serif];",
110 "}");
111
112 MT("indent_parentheses",
113 "[tag foo]:[variable-3 before] {",
114 " [property background]: [atom url](",
115 "[string blahblah]",
116 "[string etc]",
117 "[string ]) [keyword !important];",
118 "}");
119
120 MT("font_face",
121 "[def @font-face] {",
122 " [property font-family]: [string 'myfont'];",
123 " [error nonsense]: [string 'abc'];",
124 " [property src]: [atom url]([string http://blah]),",
125 " [atom url]([string http://foo]);",
126 "}");
127
128 MT("empty_url",
129 "[def @import] [atom url]() [attribute screen];");
130
131 MT("parens",
132 "[qualifier .foo] {",
133 " [property background-image]: [variable fade]([atom #000], [number 20%]);",
134 " [property border-image]: [atom linear-gradient](",
135 " [atom to] [atom bottom],",
136 " [variable fade]([atom #000], [number 20%]) [number 0%],",
137 " [variable fade]([atom #000], [number 20%]) [number 100%]",
138 " );",
139 "}");
140
141 MT("css_variable",
142 ":[variable-3 root] {",
143 " [variable-2 --main-color]: [atom #06c];",
144 "}",
145 "[tag h1][builtin #foo] {",
146 " [property color]: [atom var]([variable-2 --main-color]);",
147 "}");
148
149 MT("supports",
150 "[def @supports] ([keyword not] (([property text-align-last]: [atom justify]) [keyword or] ([meta -moz-][property text-align-last]: [atom justify])) {",
151 " [property text-align-last]: [atom justify];",
152 "}");
153
154 MT("document",
155 "[def @document] [tag url]([string http://blah]),",
156 " [tag url-prefix]([string https://]),",
157 " [tag domain]([string blah.com]),",
158 " [tag regexp]([string \".*blah.+\"]) {",
159 " [builtin #id] {",
160 " [property background-color]: [keyword white];",
161 " }",
162 " [tag foo] {",
163 " [property font-family]: [variable Verdana], [atom sans-serif];",
164 " }",
165 "}");
166
167 MT("document_url",
168 "[def @document] [tag url]([string http://blah]) { [qualifier .class] { } }");
169
170 MT("document_urlPrefix",
171 "[def @document] [tag url-prefix]([string https://]) { [builtin #id] { } }");
172
173 MT("document_domain",
174 "[def @document] [tag domain]([string blah.com]) { [tag foo] { } }");
175
176 MT("document_regexp",
177 "[def @document] [tag regexp]([string \".*blah.+\"]) { [builtin #id] { } }");
178
179 MT("counter-style",
180 "[def @counter-style] [variable binary] {",
181 " [property system]: [atom numeric];",
182 " [property symbols]: [number 0] [number 1];",
183 " [property suffix]: [string \".\"];",
184 " [property range]: [atom infinite];",
185 " [property speak-as]: [atom numeric];",
186 "}");
187
188 MT("counter-style-additive-symbols",
189 "[def @counter-style] [variable simple-roman] {",
190 " [property system]: [atom additive];",
191 " [property additive-symbols]: [number 10] [variable X], [number 5] [variable V], [number 1] [variable I];",
192 " [property range]: [number 1] [number 49];",
193 "}");
194
195 MT("counter-style-use",
196 "[tag ol][qualifier .roman] { [property list-style]: [variable simple-roman]; }");
197
198 MT("counter-style-symbols",
199 "[tag ol] { [property list-style]: [atom symbols]([atom cyclic] [string \"*\"] [string \"\\2020\"] [string \"\\2021\"] [string \"\\A7\"]); }");
200 })();
201