1 | (function (Prism) {
|
2 |
|
3 |
|
4 |
|
5 |
|
6 | var stringEscape = /\\(?:(?!\2)|\2(?:[^()\r\n]|\([^()]*\)))/.source;
|
7 |
|
8 | var stringTypes = /"""(?:[^\\"]|"(?!""\2)|<esc>)*"""/.source +
|
9 |
|
10 | '|' + /'''(?:[^\\']|'(?!''\2)|<esc>)*'''/.source +
|
11 |
|
12 | '|' + /"(?:[^\\\r\n"]|"(?!\2)|<esc>)*"/.source +
|
13 |
|
14 | '|' + /'(?:[^\\\r\n']|'(?!\2)|<esc>)*'/.source;
|
15 | var stringLiteral = '(?:' + stringTypes.replace(/<esc>/g, stringEscape) + ')';
|
16 |
|
17 | Prism.languages.cue = {
|
18 | 'comment': {
|
19 | pattern: /\/\/.*/,
|
20 | greedy: true
|
21 | },
|
22 | 'string-literal': {
|
23 |
|
24 | pattern: RegExp(/(^|[^#"'\\])(#*)/.source + stringLiteral + /(?!["'])\2/.source),
|
25 | lookbehind: true,
|
26 | greedy: true,
|
27 | inside: {
|
28 |
|
29 |
|
30 |
|
31 | 'escape': {
|
32 | pattern: /(?=[\s\S]*["'](#*)$)\\\1(?:U[a-fA-F0-9]{1,8}|u[a-fA-F0-9]{1,4}|x[a-fA-F0-9]{1,2}|\d{2,3}|[^(])/,
|
33 | greedy: true,
|
34 | alias: 'string'
|
35 | },
|
36 | 'interpolation': {
|
37 | pattern: /(?=[\s\S]*["'](#*)$)\\\1\([^()]*\)/,
|
38 | greedy: true,
|
39 | inside: {
|
40 | 'punctuation': /^\\#*\(|\)$/,
|
41 | 'expression': {
|
42 | pattern: /[\s\S]+/,
|
43 | inside: null
|
44 | }
|
45 | }
|
46 | },
|
47 | 'string': /[\s\S]+/
|
48 | }
|
49 | },
|
50 |
|
51 | 'keyword': {
|
52 | pattern: /(^|[^\w$])(?:for|if|import|in|let|null|package)(?![\w$])/,
|
53 | lookbehind: true
|
54 | },
|
55 | 'boolean': {
|
56 | pattern: /(^|[^\w$])(?:false|true)(?![\w$])/,
|
57 | lookbehind: true
|
58 | },
|
59 | 'builtin': {
|
60 | pattern: /(^|[^\w$])(?:bool|bytes|float|float(?:32|64)|u?int(?:8|16|32|64|128)?|number|rune|string)(?![\w$])/,
|
61 | lookbehind: true
|
62 | },
|
63 |
|
64 | 'attribute': {
|
65 | pattern: /@[\w$]+(?=\s*\()/,
|
66 | alias: 'function'
|
67 | },
|
68 | 'function': {
|
69 | pattern: /(^|[^\w$])[a-z_$][\w$]*(?=\s*\()/i,
|
70 | lookbehind: true
|
71 | },
|
72 |
|
73 | 'number': {
|
74 | pattern: /(^|[^\w$.])(?:0b[01]+(?:_[01]+)*|0o[0-7]+(?:_[0-7]+)*|0[xX][0-9A-Fa-f]+(?:_[0-9A-Fa-f]+)*|(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[eE][+-]?\d+(?:_\d+)*)?(?:[KMGTP]i?)?)(?![\w$])/,
|
75 | lookbehind: true
|
76 | },
|
77 |
|
78 | 'operator': /\.{3}|_\|_|&&?|\|\|?|[=!]~|[<>=!]=?|[+\-*/?]/,
|
79 | 'punctuation': /[()[\]{},.:]/
|
80 | };
|
81 |
|
82 | Prism.languages.cue['string-literal'].inside.interpolation.inside.expression.inside = Prism.languages.cue;
|
83 |
|
84 | }(Prism));
|