UNPKG

1.73 kBJavaScriptView Raw
1Prism.languages.hcl = {
2 'comment': /(?:\/\/|#).*|\/\*[\s\S]*?(?:\*\/|$)/,
3 'heredoc': {
4 pattern: /<<-?(\w+)[\s\S]*?^\s*\1/m,
5 greedy: true,
6 alias: 'string'
7 },
8 'keyword': [
9 {
10 pattern: /(?:resource|data)\s+(?:"(?:\\[\s\S]|[^\\"])*")(?=\s+"[\w-]+"\s+{)/i,
11 inside: {
12 'type': {
13 pattern: /(resource|data|\s+)(?:"(?:\\[\s\S]|[^\\"])*")/i,
14 lookbehind: true,
15 alias: 'variable'
16 }
17 }
18 },
19 {
20 pattern: /(?:provider|provisioner|variable|output|module|backend)\s+(?:[\w-]+|"(?:\\[\s\S]|[^\\"])*")\s+(?={)/i,
21 inside: {
22 'type': {
23 pattern: /(provider|provisioner|variable|output|module|backend)\s+(?:[\w-]+|"(?:\\[\s\S]|[^\\"])*")\s+/i,
24 lookbehind: true,
25 alias: 'variable'
26 }
27 }
28 },
29 /[\w-]+(?=\s+{)/
30 ],
31 'property': [
32 /[\w-\.]+(?=\s*=(?!=))/,
33 /"(?:\\[\s\S]|[^\\"])+"(?=\s*[:=])/,
34 ],
35 'string': {
36 pattern: /"(?:[^\\$"]|\\[\s\S]|\$(?:(?=")|\$+|[^"${])|\$\{(?:[^{}"]|"(?:[^\\"]|\\[\s\S])*")*\})*"/,
37 greedy: true,
38 inside: {
39 'interpolation': {
40 pattern: /(^|[^$])\$\{(?:[^{}"]|"(?:[^\\"]|\\[\s\S])*")*\}/,
41 lookbehind: true,
42 inside: {
43 'type': {
44 pattern: /(\b(?:terraform|var|self|count|module|path|data|local)\b\.)[\w\*]+/i,
45 lookbehind: true,
46 alias: 'variable'
47 },
48 'keyword': /\b(?:terraform|var|self|count|module|path|data|local)\b/i,
49 'function': /\w+(?=\()/,
50 'string': {
51 pattern: /"(?:\\[\s\S]|[^\\"])*"/,
52 greedy: true,
53 },
54 'number': /\b0x[\da-f]+\b|\b\d+\.?\d*(?:e[+-]?\d+)?/i,
55 'punctuation': /[!\$#%&'()*+,.\/;<=>@\[\\\]^`{|}~?:]/,
56 }
57 },
58 }
59 },
60 'number': /\b0x[\da-f]+\b|\b\d+\.?\d*(?:e[+-]?\d+)?/i,
61 'boolean': /\b(?:true|false)\b/i,
62 'punctuation': /[=\[\]{}]/,
63};