Skip to content

Commit e523f5d

Browse files
author
那里好脏不可以
authored
CSS Extras: Renamed attr-{name,value} tokens and added tokens for combinators and selector lists (#2373)
1 parent 8a72830 commit e523f5d

6 files changed

+219
-181
lines changed

components/prism-css-extras.js

+9-3
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,11 @@
2727
'punctuation': /\|$/
2828
}
2929
},
30-
'attribute': {
30+
'attr-name': {
3131
pattern: /^(\s*)[-\w\xA0-\uFFFF]+/,
3232
lookbehind: true
3333
},
34-
'value': [
34+
'attr-value': [
3535
string,
3636
{
3737
pattern: /(=\s*)[-\w\xA0-\uFFFF]+(?=\s*$)/,
@@ -55,7 +55,13 @@
5555
lookbehind: true
5656
}
5757
],
58-
'punctuation': /[()]/
58+
'combinator': />|\+|~|\|\|/,
59+
60+
// the `tag` token has been existed and removed.
61+
// because we can't find a perfect tokenize to match it.
62+
// if you want to add it, please read https://github.com/PrismJS/prism/pull/2373 first.
63+
64+
'punctuation': /[(),]/,
5965
}
6066
};
6167

components/prism-css-extras.min.js

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/languages/css!+css-extras/selector_attribute_feature.test

+35-35
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
["selector", [
2929
["attribute", [
3030
["punctuation", "["],
31-
["attribute", "attr"],
31+
["attr-name", "attr"],
3232
["punctuation", "]"]
3333
]]
3434
]],
@@ -38,9 +38,9 @@
3838
["selector", [
3939
["attribute", [
4040
["punctuation", "["],
41-
["attribute", "attr"],
41+
["attr-name", "attr"],
4242
["operator", "="],
43-
["value", "val"],
43+
["attr-value", "val"],
4444
["punctuation", "]"]
4545
]]
4646
]],
@@ -50,9 +50,9 @@
5050
["selector", [
5151
["attribute", [
5252
["punctuation", "["],
53-
["attribute", "attr"],
53+
["attr-name", "attr"],
5454
["operator", "="],
55-
["value", "\"val\""],
55+
["attr-value", "\"val\""],
5656
["punctuation", "]"]
5757
]]
5858
]],
@@ -62,9 +62,9 @@
6262
["selector", [
6363
["attribute", [
6464
["punctuation", "["],
65-
["attribute", "attr"],
65+
["attr-name", "attr"],
6666
["operator", "="],
67-
["value", "'val'"],
67+
["attr-value", "'val'"],
6868
["punctuation", "]"]
6969
]]
7070
]],
@@ -74,9 +74,9 @@
7474
["selector", [
7575
["attribute", [
7676
["punctuation", "["],
77-
["attribute", "attr"],
77+
["attr-name", "attr"],
7878
["operator", "|="],
79-
["value", "val"],
79+
["attr-value", "val"],
8080
["punctuation", "]"]
8181
]]
8282
]],
@@ -86,9 +86,9 @@
8686
["selector", [
8787
["attribute", [
8888
["punctuation", "["],
89-
["attribute", "attr"],
89+
["attr-name", "attr"],
9090
["operator", "~="],
91-
["value", "val"],
91+
["attr-value", "val"],
9292
["punctuation", "]"]
9393
]]
9494
]],
@@ -98,9 +98,9 @@
9898
["selector", [
9999
["attribute", [
100100
["punctuation", "["],
101-
["attribute", "attr"],
101+
["attr-name", "attr"],
102102
["operator", "|="],
103-
["value", "val"],
103+
["attr-value", "val"],
104104
["punctuation", "]"]
105105
]]
106106
]],
@@ -110,9 +110,9 @@
110110
["selector", [
111111
["attribute", [
112112
["punctuation", "["],
113-
["attribute", "attr"],
113+
["attr-name", "attr"],
114114
["operator", "^="],
115-
["value", "val"],
115+
["attr-value", "val"],
116116
["punctuation", "]"]
117117
]]
118118
]],
@@ -122,9 +122,9 @@
122122
["selector", [
123123
["attribute", [
124124
["punctuation", "["],
125-
["attribute", "attr"],
125+
["attr-name", "attr"],
126126
["operator", "$="],
127-
["value", "val"],
127+
["attr-value", "val"],
128128
["punctuation", "]"]
129129
]]
130130
]],
@@ -134,9 +134,9 @@
134134
["selector", [
135135
["attribute", [
136136
["punctuation", "["],
137-
["attribute", "attr"],
137+
["attr-name", "attr"],
138138
["operator", "*="],
139-
["value", "val"],
139+
["attr-value", "val"],
140140
["punctuation", "]"]
141141
]]
142142
]],
@@ -150,7 +150,7 @@
150150
"foo",
151151
["punctuation", "|"]
152152
]],
153-
["attribute", "attr"],
153+
["attr-name", "attr"],
154154
["punctuation", "]"]
155155
]],
156156
["attribute", [
@@ -159,15 +159,15 @@
159159
"*",
160160
["punctuation", "|"]
161161
]],
162-
["attribute", "attr"],
162+
["attr-name", "attr"],
163163
["punctuation", "]"]
164164
]],
165165
["attribute", [
166166
["punctuation", "["],
167167
["namespace", [
168168
["punctuation", "|"]
169169
]],
170-
["attribute", "attr"],
170+
["attr-name", "attr"],
171171
["punctuation", "]"]
172172
]]
173173
]],
@@ -181,9 +181,9 @@
181181
"foo",
182182
["punctuation", "|"]
183183
]],
184-
["attribute", "attr"],
184+
["attr-name", "attr"],
185185
["operator", "|="],
186-
["value", "val"],
186+
["attr-value", "val"],
187187
["punctuation", "]"]
188188
]]
189189
]],
@@ -193,9 +193,9 @@
193193
["selector", [
194194
["attribute", [
195195
["punctuation", "["],
196-
["attribute", "attr"],
196+
["attr-name", "attr"],
197197
["operator", "="],
198-
["value", "val"],
198+
["attr-value", "val"],
199199
["case-sensitivity", "i"],
200200
["punctuation", "]"]
201201
]]
@@ -206,9 +206,9 @@
206206
["selector", [
207207
["attribute", [
208208
["punctuation", "["],
209-
["attribute", "attr"],
209+
["attr-name", "attr"],
210210
["operator", "="],
211-
["value", "\"val\""],
211+
["attr-value", "\"val\""],
212212
["case-sensitivity", "S"],
213213
["punctuation", "]"]
214214
]]
@@ -219,7 +219,7 @@
219219
["selector", [
220220
["attribute", [
221221
["punctuation", "["],
222-
["attribute", "attr"],
222+
["attr-name", "attr"],
223223
["punctuation", "]"]
224224
]]
225225
]],
@@ -229,9 +229,9 @@
229229
["selector", [
230230
["attribute", [
231231
["punctuation", "["],
232-
["attribute", "attr"],
232+
["attr-name", "attr"],
233233
["operator", "="],
234-
["value", "val"],
234+
["attr-value", "val"],
235235
["punctuation", "]"]
236236
]]
237237
]],
@@ -241,9 +241,9 @@
241241
["selector", [
242242
["attribute", [
243243
["punctuation", "["],
244-
["attribute", "attr"],
244+
["attr-name", "attr"],
245245
["operator", "="],
246-
["value", "val"],
246+
["attr-value", "val"],
247247
["case-sensitivity", "i"],
248248
["punctuation", "]"]
249249
]]
@@ -254,9 +254,9 @@
254254
["selector", [
255255
["attribute", [
256256
["punctuation", "["],
257-
["attribute", "attr"],
257+
["attr-name", "attr"],
258258
["operator", "="],
259-
["value", "\"i#m :not(a.class)\""],
259+
["attr-value", "\"i#m :not(a.class)\""],
260260
["punctuation", "]"]
261261
]]
262262
]],

tests/languages/css!+css-extras/selector_feature.test

+33-1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,14 @@ foo#bar {
77

88
#foo > .bar:hover:after {
99

10+
span,
11+
div {
12+
13+
div > p,
14+
.css-li ~ .css-li,
15+
.previous-selector + .selector,
16+
.selected || td {
17+
1018
----------------------------------------------------
1119

1220
[
@@ -32,10 +40,34 @@ foo#bar {
3240

3341
["selector", [
3442
["id", "#foo"],
35-
" > ",
43+
["combinator", ">"],
3644
["class", ".bar"],
3745
["pseudo-class", ":hover"],
3846
["pseudo-element", ":after"]
47+
]], ["punctuation", "{"],
48+
49+
["selector", [
50+
"span",
51+
["punctuation", ","],
52+
"\r\ndiv"
53+
]], ["punctuation", "{"],
54+
55+
["selector", [
56+
"div ",
57+
["combinator", ">"],
58+
" p",
59+
["punctuation", ","],
60+
["class", ".css-li"],
61+
["combinator", "~"],
62+
["class", ".css-li"],
63+
["punctuation", ","],
64+
["class", ".previous-selector"],
65+
["combinator", "+"],
66+
["class", ".selector"],
67+
["punctuation", ","],
68+
["class", ".selected"],
69+
["combinator", "||"],
70+
" td"
3971
]], ["punctuation", "{"]
4072
]
4173

0 commit comments

Comments
 (0)