Skip to content

Commit 964de5a

Browse files
CSS: Improved url and added keywords (#2432)
1 parent 22eb5ca commit 964de5a

File tree

5 files changed

+38
-13
lines changed

5 files changed

+38
-13
lines changed

components/prism-css.js

+11-2
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,25 @@
1212
pattern: /(\bselector\s*\((?!\s*\))\s*)(?:[^()]|\((?:[^()]|\([^()]*\))*\))+?(?=\s*\))/,
1313
lookbehind: true,
1414
alias: 'selector'
15+
},
16+
'keyword': {
17+
pattern: /(^|[^\w-])(?:and|not|only|or)(?![\w-])/,
18+
lookbehind: true
1519
}
1620
// See rest below
1721
}
1822
},
1923
'url': {
20-
pattern: RegExp('url\\((?:' + string.source + '|[^\n\r()]*)\\)', 'i'),
24+
// https://drafts.csswg.org/css-values-3/#urls
25+
pattern: RegExp('\\burl\\((?:' + string.source + '|' + /(?:[^\\\r\n()"']|\\[\s\S])*/.source + ')\\)', 'i'),
2126
greedy: true,
2227
inside: {
2328
'function': /^url/i,
24-
'punctuation': /^\(|\)$/
29+
'punctuation': /^\(|\)$/,
30+
'string': {
31+
pattern: RegExp('^' + string.source + '$'),
32+
alias: 'url'
33+
}
2534
}
2635
},
2736
'selector': RegExp('[^{}\\s](?:[^{};"\']|' + string.source + ')*?(?=\\s*\\{)'),

components/prism-css.min.js

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

prism.js

+11-2
Original file line numberDiff line numberDiff line change
@@ -1329,16 +1329,25 @@ Prism.languages.rss = Prism.languages.xml;
13291329
pattern: /(\bselector\s*\((?!\s*\))\s*)(?:[^()]|\((?:[^()]|\([^()]*\))*\))+?(?=\s*\))/,
13301330
lookbehind: true,
13311331
alias: 'selector'
1332+
},
1333+
'keyword': {
1334+
pattern: /(^|[^\w-])(?:and|not|only|or)(?![\w-])/,
1335+
lookbehind: true
13321336
}
13331337
// See rest below
13341338
}
13351339
},
13361340
'url': {
1337-
pattern: RegExp('url\\((?:' + string.source + '|[^\n\r()]*)\\)', 'i'),
1341+
// https://drafts.csswg.org/css-values-3/#urls
1342+
pattern: RegExp('\\burl\\((?:' + string.source + '|' + /(?:[^\\\r\n()"']|\\[\s\S])*/.source + ')\\)', 'i'),
13381343
greedy: true,
13391344
inside: {
13401345
'function': /^url/i,
1341-
'punctuation': /^\(|\)$/
1346+
'punctuation': /^\(|\)$/,
1347+
'string': {
1348+
pattern: RegExp('^' + string.source + '$'),
1349+
alias: 'url'
1350+
}
13421351
}
13431352
},
13441353
'selector': RegExp('[^{}\\s](?:[^{};"\']|' + string.source + ')*?(?=\\s*\\{)'),

tests/languages/css/atrule_feature.test

+2-2
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
["punctuation", ":"],
3232
" 640px",
3333
["punctuation", ")"],
34-
" and ",
34+
["keyword", "and"],
3535
["punctuation", "("],
3636
["property", "min-height"],
3737
["punctuation", ":"],
@@ -47,7 +47,7 @@
4747
["punctuation", ":"],
4848
" 50vmax",
4949
["punctuation", ")"],
50-
"\r\n\tor ",
50+
["keyword", "or"],
5151
["punctuation", "("],
5252
["property", "top"],
5353
["punctuation", ":"],

tests/languages/css/url_feature.test

+13-6
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
url(foo.png)
2+
url(close\)parens)
23
url('foo.png')
34
url("foo.png")
45
url('foo\
@@ -21,33 +22,39 @@ bar.png")
2122
["url", [
2223
["function", "url"],
2324
["punctuation", "("],
24-
"'foo.png'",
25+
"close\\)parens",
2526
["punctuation", ")"]
2627
]],
2728
["url", [
2829
["function", "url"],
2930
["punctuation", "("],
30-
"\"foo.png\"",
31+
["string", "'foo.png'"],
3132
["punctuation", ")"]
3233
]],
3334
["url", [
3435
["function", "url"],
3536
["punctuation", "("],
36-
"'foo\\\r\nbar.png'",
37+
["string", "\"foo.png\""],
3738
["punctuation", ")"]
3839
]],
3940
["url", [
4041
["function", "url"],
4142
["punctuation", "("],
42-
"\"foo\\\r\nbar.png\"",
43+
["string", "'foo\\\r\nbar.png'"],
44+
["punctuation", ")"]
45+
]],
46+
["url", [
47+
["function", "url"],
48+
["punctuation", "("],
49+
["string", "\"foo\\\r\nbar.png\""],
4350
["punctuation", ")"]
4451
]],
4552
["atrule", [
4653
["rule", "@import"],
4754
["url", [
4855
["function", "url"],
4956
["punctuation", "("],
50-
"\"https://cdn.jsdelivr.net/npm/prismj1.19.0/themes/prism-dark.css\"",
57+
["string", "\"https://cdn.jsdelivr.net/npm/prismj1.19.0/themes/prism-dark.css\""],
5158
["punctuation", ")"]
5259
]],
5360
["punctuation", ";"]
@@ -57,7 +64,7 @@ bar.png")
5764
["url", [
5865
["function", "url"],
5966
["punctuation", "("],
60-
"\"https://cdn.jsdelivr.net/npm/prismjs/themes/prism-dark.css\"",
67+
["string", "\"https://cdn.jsdelivr.net/npm/prismjs/themes/prism-dark.css\""],
6168
["punctuation", ")"]
6269
]],
6370
["punctuation", ";"]

0 commit comments

Comments
 (0)