1 | (function (Prism) {
|
2 |
|
3 | Prism.languages.typescript = Prism.languages.extend('javascript', {
|
4 | 'class-name': {
|
5 | pattern: /(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,
|
6 | lookbehind: true,
|
7 | greedy: true,
|
8 | inside: null
|
9 | },
|
10 |
|
11 | 'keyword': /\b(?:abstract|as|asserts|async|await|break|case|catch|class|const|constructor|continue|debugger|declare|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|is|keyof|let|module|namespace|new|null|of|package|private|protected|public|readonly|return|require|set|static|super|switch|this|throw|try|type|typeof|undefined|var|void|while|with|yield)\b/,
|
12 | 'builtin': /\b(?:string|Function|any|number|boolean|Array|symbol|console|Promise|unknown|never)\b/,
|
13 | });
|
14 |
|
15 |
|
16 | delete Prism.languages.typescript['parameter'];
|
17 |
|
18 |
|
19 | var typeInside = Prism.languages.extend('typescript', {});
|
20 | delete typeInside['class-name'];
|
21 |
|
22 | Prism.languages.typescript['class-name'].inside = typeInside;
|
23 |
|
24 | Prism.languages.insertBefore('typescript', 'function', {
|
25 | 'generic-function': {
|
26 |
|
27 | pattern: /#?[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,
|
28 | greedy: true,
|
29 | inside: {
|
30 | 'function': /^#?[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*/,
|
31 | 'generic': {
|
32 | pattern: /<[\s\S]+/,
|
33 | alias: 'class-name',
|
34 | inside: typeInside
|
35 | }
|
36 | }
|
37 | }
|
38 | });
|
39 |
|
40 | Prism.languages.ts = Prism.languages.typescript;
|
41 |
|
42 | }(Prism));
|