UNPKG

1.92 kBJavaScriptView Raw
1// based loosely upon: https://github.com/Azure/bicep/blob/main/src/textmate/bicep.tmlanguage
2Prism.languages.bicep = {
3 'comment': [
4 {
5 // multiline comments eg /* ASDF */
6 pattern: /(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,
7 lookbehind: true,
8 greedy: true
9 },
10 {
11 // singleline comments eg // ASDF
12 pattern: /(^|[^\\:])\/\/.*/,
13 lookbehind: true,
14 greedy: true
15 }
16 ],
17
18 'property': [
19 {
20 pattern: /([\r\n][ \t]*)[a-z_]\w*(?=[ \t]*:)/i,
21 lookbehind: true
22 },
23 {
24 pattern: /([\r\n][ \t]*)'(?:\\.|\$(?!\{)|[^'\\\r\n$])*'(?=[ \t]*:)/,
25 lookbehind: true,
26 greedy: true
27 }
28 ],
29 'string': [
30 {
31 pattern: /'''[^'][\s\S]*?'''/,
32 greedy: true
33 },
34 {
35 pattern: /(^|[^\\'])'(?:\\.|\$(?!\{)|[^'\\\r\n$])*'/,
36 lookbehind: true,
37 greedy: true,
38 }
39 ],
40 'interpolated-string': {
41 pattern: /(^|[^\\'])'(?:\\.|\$(?:(?!\{)|\{[^{}\r\n]*\})|[^'\\\r\n$])*'/,
42 lookbehind: true,
43 greedy: true,
44 inside: {
45 'interpolation': {
46 pattern: /\$\{[^{}\r\n]*\}/,
47 inside: {
48 'expression': {
49 pattern: /(^\$\{)[\s\S]+(?=\}$)/,
50 lookbehind: true
51 },
52 'punctuation': /^\$\{|\}$/,
53 }
54 },
55 'string': /[\s\S]+/
56 }
57 },
58
59 'datatype': {
60 pattern: /(\b(?:output|param)\b[ \t]+\w+[ \t]+)\w+\b/,
61 lookbehind: true,
62 alias: 'class-name'
63 },
64
65 'boolean': /\b(?:false|true)\b/,
66 // https://github.com/Azure/bicep/blob/114a3251b4e6e30082a58729f19a8cc4e374ffa6/src/textmate/bicep.tmlanguage#L184
67 'keyword': /\b(?:existing|for|if|in|module|null|output|param|resource|targetScope|var)\b/,
68
69 'decorator': /@\w+\b/,
70 'function': /\b[a-z_]\w*(?=[ \t]*\()/i,
71
72 'number': /(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:E[+-]?\d+)?/i,
73 'operator': /--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/,
74 'punctuation': /[{}[\];(),.:]/,
75};
76
77Prism.languages.bicep['interpolated-string'].inside['interpolation'].inside['expression'].inside = Prism.languages.bicep;