1 | (function (Prism) {
|
2 |
|
3 | Prism.languages.insertBefore('javascript', 'function-variable', {
|
4 | 'method-variable': {
|
5 | pattern: RegExp('(\\.\\s*)' + Prism.languages.javascript['function-variable'].pattern.source),
|
6 | lookbehind: true,
|
7 | alias: ['function-variable', 'method', 'function', 'property-access']
|
8 | }
|
9 | });
|
10 |
|
11 | Prism.languages.insertBefore('javascript', 'function', {
|
12 | 'method': {
|
13 | pattern: RegExp('(\\.\\s*)' + Prism.languages.javascript['function'].source),
|
14 | lookbehind: true,
|
15 | alias: ['function', 'property-access']
|
16 | }
|
17 | });
|
18 |
|
19 | Prism.languages.insertBefore('javascript', 'constant', {
|
20 | 'known-class-name': [
|
21 | {
|
22 |
|
23 |
|
24 | pattern: /\b(?:(?:(?:Uint|Int)(?:8|16|32)|Uint8Clamped|Float(?:32|64))?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|(?:Weak)?(?:Set|Map)|WebAssembly)\b/,
|
25 | alias: 'class-name'
|
26 | },
|
27 | {
|
28 |
|
29 | pattern: /\b(?:[A-Z]\w*)Error\b/,
|
30 | alias: 'class-name'
|
31 | }
|
32 | ]
|
33 | });
|
34 |
|
35 | Prism.languages.javascript['keyword'].unshift(
|
36 | {
|
37 | pattern: /\b(?:as|default|export|from|import)\b/,
|
38 | alias: 'module'
|
39 | },
|
40 | {
|
41 | pattern: /\bnull\b/,
|
42 | alias: ['null', 'nil']
|
43 | },
|
44 | {
|
45 | pattern: /\bundefined\b/,
|
46 | alias: 'nil'
|
47 | }
|
48 | );
|
49 |
|
50 | Prism.languages.insertBefore('javascript', 'operator', {
|
51 | 'spread': {
|
52 | pattern: /\.{3}/,
|
53 | alias: 'operator'
|
54 | },
|
55 | 'arrow': {
|
56 | pattern: /=>/,
|
57 | alias: 'operator'
|
58 | }
|
59 | });
|
60 |
|
61 | Prism.languages.insertBefore('javascript', 'punctuation', {
|
62 | 'property-access': {
|
63 | pattern: /(\.\s*)#?[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*/,
|
64 | lookbehind: true
|
65 | },
|
66 | 'maybe-class-name': {
|
67 | pattern: /(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,
|
68 | lookbehind: true
|
69 | },
|
70 | 'dom': {
|
71 |
|
72 | pattern: /\b(?:document|location|navigator|performance|(?:local|session)Storage|window)\b/,
|
73 | alias: 'variable'
|
74 | },
|
75 | 'console': {
|
76 | pattern: /\bconsole(?=\s*\.)/,
|
77 | alias: 'class-name'
|
78 | }
|
79 | });
|
80 |
|
81 |
|
82 |
|
83 | var maybeClassNameTokens = ['function', 'function-variable', 'method', 'method-variable', 'property-access'];
|
84 |
|
85 | for (var i = 0; i < maybeClassNameTokens.length; i++) {
|
86 | var token = maybeClassNameTokens[i];
|
87 | var value = Prism.languages.javascript[token];
|
88 |
|
89 |
|
90 | if (Prism.util.type(value) === 'RegExp') {
|
91 | value = Prism.languages.javascript[token] = {
|
92 | pattern: value
|
93 | };
|
94 | }
|
95 |
|
96 |
|
97 |
|
98 | var inside = value.inside || {};
|
99 | value.inside = inside;
|
100 |
|
101 | inside['maybe-class-name'] = /^[A-Z][\s\S]*/;
|
102 | }
|
103 |
|
104 | }(Prism));
|