Skip to content

Commit 9f649fb

Browse files
committed
JavaScript: Properly match every operator as a whole token. Fix #1133
1 parent ea8a2ca commit 9f649fb

File tree

4 files changed

+25
-17
lines changed

4 files changed

+25
-17
lines changed

components/prism-javascript.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ Prism.languages.javascript = Prism.languages.extend('clike', {
33
'number': /\b-?(0x[\dA-Fa-f]+|0b[01]+|0o[0-7]+|\d*\.?\d+([Ee][+-]?\d+)?|NaN|Infinity)\b/,
44
// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)
55
'function': /[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*(?=\()/i,
6-
'operator': /--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*\*?|\/|~|\^|%|\.{3}/
6+
'operator': /-[-=]?|\+[+=]?|!=?=?|<<?=?|>>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/
77
});
88

99
Prism.languages.insertBefore('javascript', 'keyword', {

components/prism-javascript.min.js

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

prism.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -671,7 +671,7 @@ Prism.languages.javascript = Prism.languages.extend('clike', {
671671
'number': /\b-?(0x[\dA-Fa-f]+|0b[01]+|0o[0-7]+|\d*\.?\d+([Ee][+-]?\d+)?|NaN|Infinity)\b/,
672672
// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)
673673
'function': /[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*(?=\()/i,
674-
'operator': /--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*\*?|\/|~|\^|%|\.{3}/
674+
'operator': /-[-=]?|\+[+=]?|!=?=?|<<?=?|>>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/
675675
});
676676

677677
Prism.languages.insertBefore('javascript', 'keyword', {

tests/languages/javascript/operator_feature.test

+22-14
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,31 @@
1-
- + -- ++
2-
< <= > >=
3-
= == ===
1+
- -- -=
2+
+ ++ +=
3+
< <= << <<=
4+
> >= >> >>= >>> >>>=
5+
= == === =>
46
! != !==
5-
& && | ||
6-
* **
7-
? / ~ ^ %
8-
...
7+
& && &=
8+
| || |=
9+
* ** *= **=
10+
/ /= ~
11+
^ ^= % %=
12+
? ...
913

1014
----------------------------------------------------
1115

1216
[
13-
["operator", "-"], ["operator", "+"], ["operator", "--"], ["operator", "++"],
14-
["operator", "<"], ["operator", "<="], ["operator", ">"], ["operator", ">="],
15-
["operator", "="], ["operator", "=="], ["operator", "==="],
17+
["operator", "-"], ["operator", "--"], ["operator", "-="],
18+
["operator", "+"], ["operator", "++"], ["operator", "+="],
19+
["operator", "<"], ["operator", "<="], ["operator", "<<"], ["operator", "<<="],
20+
["operator", ">"], ["operator", ">="], ["operator", ">>"], ["operator", ">>="], ["operator", ">>>"], ["operator", ">>>="],
21+
["operator", "="], ["operator", "=="], ["operator", "==="], ["operator", "=>"],
1622
["operator", "!"], ["operator", "!="], ["operator", "!=="],
17-
["operator", "&"], ["operator", "&&"], ["operator", "|"], ["operator", "||"],
18-
["operator", "*"], ["operator", "**"],
19-
["operator", "?"], ["operator", "/"], ["operator", "~"], ["operator", "^"], ["operator", "%"],
20-
["operator", "..."]
23+
["operator", "&"], ["operator", "&&"], ["operator", "&="],
24+
["operator", "|"], ["operator", "||"], ["operator", "|="],
25+
["operator", "*"], ["operator", "**"], ["operator", "*="], ["operator", "**="],
26+
["operator", "/"], ["operator", "/="], ["operator", "~"],
27+
["operator", "^"], ["operator", "^="], ["operator", "%"], ["operator", "%="],
28+
["operator", "?"], ["operator", "..."]
2129
]
2230

2331
----------------------------------------------------

0 commit comments

Comments
 (0)