Skip to content

Commit 6068bf1

Browse files
JS: Added support for numeric separators (#1895)
This adds support for JavaScript's new numeric separators. E.g. `123_456`.
1 parent f0a1066 commit 6068bf1

File tree

4 files changed

+23
-4
lines changed

4 files changed

+23
-4
lines changed

components/prism-javascript.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ Prism.languages.javascript = Prism.languages.extend('clike', {
1616
lookbehind: true
1717
},
1818
],
19-
'number': /\b(?:(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+)n?|\d+n|NaN|Infinity)\b|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee][+-]?\d+)?/,
19+
'number': /\b(?:(?:0[xX](?:[\dA-Fa-f](?:_[\dA-Fa-f])?)+|0[bB](?:[01](?:_[01])?)+|0[oO](?:[0-7](?:_[0-7])?)+)n?|(?:\d(?:_\d)?)+n|NaN|Infinity)\b|(?:\b(?:\d(?:_\d)?)+\.?(?:\d(?:_\d)?)*|\B\.(?:\d(?:_\d)?)+)(?:[Ee][+-]?(?:\d(?:_\d)?)+)?/,
2020
// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)
2121
'function': /[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,
2222
'operator': /-[-=]?|\+[+=]?|!=?=?|<<?=?|>>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/

components/prism-javascript.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

prism.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -783,7 +783,7 @@ Prism.languages.javascript = Prism.languages.extend('clike', {
783783
lookbehind: true
784784
},
785785
],
786-
'number': /\b(?:(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+)n?|\d+n|NaN|Infinity)\b|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee][+-]?\d+)?/,
786+
'number': /\b(?:(?:0[xX](?:[\dA-Fa-f](?:_[\dA-Fa-f])?)+|0[bB](?:[01](?:_[01])?)+|0[oO](?:[0-7](?:_[0-7])?)+)n?|(?:\d(?:_\d)?)+n|NaN|Infinity)\b|(?:\b(?:\d(?:_\d)?)+\.?(?:\d(?:_\d)?)*|\B\.(?:\d(?:_\d)?)+)(?:[Ee][+-]?(?:\d(?:_\d)?)+)?/,
787787
// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)
788788
'function': /[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,
789789
'operator': /-[-=]?|\+[+=]?|!=?=?|<<?=?|>>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/

tests/languages/javascript/number_feature.test

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,22 @@
77
0o571
88
0xbabe
99
0xBABE
10+
1011
NaN
1112
Infinity
13+
1214
123n
1315
0x123n
1416

17+
1_000_000_000_000
18+
1_000_000.220_720
19+
0b0101_0110_0011_1000
20+
0o12_34_56
21+
0x40_76_38_6A_73
22+
4_642_473_943_484_686_707n
23+
0.000_001
24+
1e10_000
25+
1526
----------------------------------------------------
1627

1728
[
@@ -27,7 +38,15 @@ Infinity
2738
["number", "NaN"],
2839
["number", "Infinity"],
2940
["number", "123n"],
30-
["number", "0x123n"]
41+
["number", "0x123n"],
42+
["number", "1_000_000_000_000"],
43+
["number", "1_000_000.220_720"],
44+
["number", "0b0101_0110_0011_1000"],
45+
["number", "0o12_34_56"],
46+
["number", "0x40_76_38_6A_73"],
47+
["number", "4_642_473_943_484_686_707n"],
48+
["number", "0.000_001"],
49+
["number", "1e10_000"]
3150
]
3251

3352
----------------------------------------------------

0 commit comments

Comments
 (0)