Mercurial
comparison .cms/lib/codemirror/mode/css/test.js @ 0:78edf6b517a0 draft
24.10
author | Coffee CMS <info@coffee-cms.ru> |
---|---|
date | Fri, 11 Oct 2024 22:40:23 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:78edf6b517a0 |
---|---|
1 // CodeMirror, copyright (c) by Marijn Haverbeke and others | |
2 // Distributed under an MIT license: https://codemirror.net/5/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("atMediaUppercase", | |
28 "[def @MEDIA] ([property orienTAtion]: [keyword landScape]) { }"); | |
29 | |
30 MT("tagSelector", | |
31 "[tag foo] { }"); | |
32 | |
33 MT("classSelector", | |
34 "[qualifier .foo-bar_hello] { }"); | |
35 | |
36 MT("idSelector", | |
37 "[builtin #foo] { [error #foo] }"); | |
38 | |
39 MT("tagSelectorUnclosed", | |
40 "[tag foo] { [property margin]: [number 0] } [tag bar] { }"); | |
41 | |
42 MT("tagStringNoQuotes", | |
43 "[tag foo] { [property font-family]: [variable hello] [variable world]; }"); | |
44 | |
45 MT("tagStringDouble", | |
46 "[tag foo] { [property font-family]: [string \"hello world\"]; }"); | |
47 | |
48 MT("tagStringSingle", | |
49 "[tag foo] { [property font-family]: [string 'hello world']; }"); | |
50 | |
51 MT("tagColorKeyword", | |
52 "[tag foo] {", | |
53 " [property color]: [keyword black];", | |
54 " [property color]: [keyword navy];", | |
55 " [property color]: [keyword yellow];", | |
56 "}"); | |
57 | |
58 MT("tagColorHex3", | |
59 "[tag foo] { [property background]: [atom #fff]; }"); | |
60 | |
61 MT("tagColorHex4", | |
62 "[tag foo] { [property background]: [atom #ffff]; }"); | |
63 | |
64 MT("tagColorHex6", | |
65 "[tag foo] { [property background]: [atom #ffffff]; }"); | |
66 | |
67 MT("tagColorHex8", | |
68 "[tag foo] { [property background]: [atom #ffffffff]; }"); | |
69 | |
70 MT("tagColorHex5Invalid", | |
71 "[tag foo] { [property background]: [atom&error #fffff]; }"); | |
72 | |
73 MT("tagColorHexInvalid", | |
74 "[tag foo] { [property background]: [atom&error #ffg]; }"); | |
75 | |
76 MT("tagNegativeNumber", | |
77 "[tag foo] { [property margin]: [number -5px]; }"); | |
78 | |
79 MT("tagPositiveNumber", | |
80 "[tag foo] { [property padding]: [number 5px]; }"); | |
81 | |
82 MT("tagVendor", | |
83 "[tag foo] { [meta -foo-][property box-sizing]: [meta -foo-][atom border-box]; }"); | |
84 | |
85 MT("tagBogusProperty", | |
86 "[tag foo] { [property&error barhelloworld]: [number 0]; }"); | |
87 | |
88 MT("tagTwoProperties", | |
89 "[tag foo] { [property margin]: [number 0]; [property padding]: [number 0]; }"); | |
90 | |
91 MT("tagTwoPropertiesURL", | |
92 "[tag foo] { [property background]: [variable&callee url]([string //example.com/foo.png]); [property padding]: [number 0]; }"); | |
93 | |
94 MT("indent_tagSelector", | |
95 "[tag strong], [tag em] {", | |
96 " [property background]: [variable&callee rgba](", | |
97 " [number 255], [number 255], [number 0], [number .2]", | |
98 " );", | |
99 "}"); | |
100 | |
101 MT("indent_atMedia", | |
102 "[def @media] {", | |
103 " [tag foo] {", | |
104 " [property color]:", | |
105 " [keyword yellow];", | |
106 " }", | |
107 "}"); | |
108 | |
109 MT("indent_comma", | |
110 "[tag foo] {", | |
111 " [property font-family]: [variable verdana],", | |
112 " [atom sans-serif];", | |
113 "}"); | |
114 | |
115 MT("indent_parentheses", | |
116 "[tag foo]:[variable-3 before] {", | |
117 " [property background]: [variable&callee url](", | |
118 "[string blahblah]", | |
119 "[string etc]", | |
120 "[string ]) [keyword !important];", | |
121 "}"); | |
122 | |
123 MT("font_face", | |
124 "[def @font-face] {", | |
125 " [property font-family]: [string 'myfont'];", | |
126 " [error nonsense]: [string 'abc'];", | |
127 " [property src]: [variable&callee url]([string http://blah]),", | |
128 " [variable&callee url]([string http://foo]);", | |
129 "}"); | |
130 | |
131 MT("empty_url", | |
132 "[def @import] [variable&callee url]() [attribute screen];"); | |
133 | |
134 MT("parens", | |
135 "[qualifier .foo] {", | |
136 " [property background-image]: [variable&callee fade]([atom #000], [number 20%]);", | |
137 " [property border-image]: [variable&callee linear-gradient](", | |
138 " [atom to] [atom bottom],", | |
139 " [variable&callee fade]([atom #000], [number 20%]) [number 0%],", | |
140 " [variable&callee fade]([atom #000], [number 20%]) [number 100%]", | |
141 " );", | |
142 "}"); | |
143 | |
144 MT("css_variable", | |
145 ":[variable-3 root] {", | |
146 " [variable-2 --main-color]: [atom #06c];", | |
147 "}", | |
148 "[tag h1][builtin #foo] {", | |
149 " [property color]: [variable&callee var]([variable-2 --main-color]);", | |
150 "}"); | |
151 | |
152 MT("blank_css_variable", | |
153 ":[variable-3 root] {", | |
154 " [variable-2 --]: [atom #06c];", | |
155 "}", | |
156 "[tag h1][builtin #foo] {", | |
157 " [property color]: [variable&callee var]([variable-2 --]);", | |
158 "}"); | |
159 | |
160 MT("supports", | |
161 "[def @supports] ([keyword not] (([property text-align-last]: [atom justify]) [keyword or] ([meta -moz-][property text-align-last]: [atom justify])) {", | |
162 " [property text-align-last]: [atom justify];", | |
163 "}"); | |
164 | |
165 MT("document", | |
166 "[def @document] [variable&callee url]([string http://blah]),", | |
167 " [variable&callee url-prefix]([string https://]),", | |
168 " [variable&callee domain]([string blah.com]),", | |
169 " [variable&callee regexp]([string \".*blah.+\"]) {", | |
170 " [builtin #id] {", | |
171 " [property background-color]: [keyword white];", | |
172 " }", | |
173 " [tag foo] {", | |
174 " [property font-family]: [variable Verdana], [atom sans-serif];", | |
175 " }", | |
176 "}"); | |
177 | |
178 MT("document_url", | |
179 "[def @document] [variable&callee url]([string http://blah]) { [qualifier .class] { } }"); | |
180 | |
181 MT("document_urlPrefix", | |
182 "[def @document] [variable&callee url-prefix]([string https://]) { [builtin #id] { } }"); | |
183 | |
184 MT("document_domain", | |
185 "[def @document] [variable&callee domain]([string blah.com]) { [tag foo] { } }"); | |
186 | |
187 MT("document_regexp", | |
188 "[def @document] [variable&callee regexp]([string \".*blah.+\"]) { [builtin #id] { } }"); | |
189 | |
190 MT("counter-style", | |
191 "[def @counter-style] [variable binary] {", | |
192 " [property system]: [atom numeric];", | |
193 " [property symbols]: [number 0] [number 1];", | |
194 " [property suffix]: [string \".\"];", | |
195 " [property range]: [atom infinite];", | |
196 " [property speak-as]: [atom numeric];", | |
197 "}"); | |
198 | |
199 MT("counter-style-additive-symbols", | |
200 "[def @counter-style] [variable simple-roman] {", | |
201 " [property system]: [atom additive];", | |
202 " [property additive-symbols]: [number 10] [variable X], [number 5] [variable V], [number 1] [variable I];", | |
203 " [property range]: [number 1] [number 49];", | |
204 "}"); | |
205 | |
206 MT("counter-style-use", | |
207 "[tag ol][qualifier .roman] { [property list-style]: [variable simple-roman]; }"); | |
208 | |
209 MT("counter-style-symbols", | |
210 "[tag ol] { [property list-style]: [variable&callee symbols]([atom cyclic] [string \"*\"] [string \"\\2020\"] [string \"\\2021\"] [string \"\\A7\"]); }"); | |
211 | |
212 MT("comment-does-not-disrupt", | |
213 "[def @font-face] [comment /* foo */] {", | |
214 " [property src]: [variable&callee url]([string x]);", | |
215 " [property font-family]: [variable One];", | |
216 "}") | |
217 })(); |