run prettier

This commit is contained in:
Alex Dima 2020-09-04 11:18:50 +02:00
parent 9d8859a82d
commit ec11002385
No known key found for this signature in database
GPG key ID: 6E58D7B045760DA0
3 changed files with 1285 additions and 1304 deletions

View file

@ -7,8 +7,8 @@
import { registerLanguage } from '../_.contribution'; import { registerLanguage } from '../_.contribution';
registerLanguage({ registerLanguage({
id: 'hcl', id: 'hcl',
extensions: ['.tf', '.tfvars', '.hcl'], extensions: ['.tf', '.tfvars', '.hcl'],
aliases: ['Terraform', 'tf', 'HCL', 'hcl'], aliases: ['Terraform', 'tf', 'HCL', 'hcl'],
loader: () => import('./hcl') loader: () => import('./hcl')
}); });

File diff suppressed because it is too large Load diff

View file

@ -9,205 +9,186 @@ import IRichLanguageConfiguration = monaco.languages.LanguageConfiguration;
import ILanguage = monaco.languages.IMonarchLanguage; import ILanguage = monaco.languages.IMonarchLanguage;
export const conf: IRichLanguageConfiguration = { export const conf: IRichLanguageConfiguration = {
comments: { comments: {
lineComment: '//', lineComment: '//',
blockComment: ['/*', '*/'], blockComment: ['/*', '*/']
}, },
brackets: [ brackets: [
['{', '}'], ['{', '}'],
['[', ']'], ['[', ']'],
['(', ')'] ['(', ')']
], ],
autoClosingPairs: [ autoClosingPairs: [
{ open: '{', close: '}' }, { open: '{', close: '}' },
{ open: '[', close: ']' }, { open: '[', close: ']' },
{ open: '(', close: ')' }, { open: '(', close: ')' },
{ open: '"', close: '"', notIn: ['string'] }, { open: '"', close: '"', notIn: ['string'] }
], ],
surroundingPairs: [ surroundingPairs: [
{ open: '{', close: '}' }, { open: '{', close: '}' },
{ open: '[', close: ']' }, { open: '[', close: ']' },
{ open: '(', close: ')' }, { open: '(', close: ')' },
{ open: '"', close: '"' }, { open: '"', close: '"' }
] ]
}; };
export const language = <ILanguage>{ export const language = <ILanguage>{
defaultToken: "", defaultToken: '',
tokenPostfix: ".hcl", tokenPostfix: '.hcl',
keywords: [ keywords: [
"var", 'var',
"local", 'local',
"path", 'path',
"for_each", 'for_each',
"any", 'any',
"string", 'string',
"number", 'number',
"bool", 'bool',
"true", 'true',
"false", 'false',
"null", 'null',
"if ", 'if ',
"else ", 'else ',
"endif ", 'endif ',
"for ", 'for ',
"in", 'in',
"endfor", 'endfor'
], ],
operators: [ operators: [
"=", '=',
">=", '>=',
"<=", '<=',
"==", '==',
"!=", '!=',
"+", '+',
"-", '-',
"*", '*',
"/", '/',
"%", '%',
"&&", '&&',
"||", '||',
"!", '!',
"<", '<',
">", '>',
"?", '?',
"...", '...',
":", ':'
], ],
symbols: /[=><!~?:&|+\-*\/\^%]+/, symbols: /[=><!~?:&|+\-*\/\^%]+/,
escapes: /\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/, escapes: /\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
terraformFunctions: /(abs|ceil|floor|log|max|min|pow|signum|chomp|format|formatlist|indent|join|lower|regex|regexall|replace|split|strrev|substr|title|trimspace|upper|chunklist|coalesce|coalescelist|compact|concat|contains|distinct|element|flatten|index|keys|length|list|lookup|map|matchkeys|merge|range|reverse|setintersection|setproduct|setunion|slice|sort|transpose|values|zipmap|base64decode|base64encode|base64gzip|csvdecode|jsondecode|jsonencode|urlencode|yamldecode|yamlencode|abspath|dirname|pathexpand|basename|file|fileexists|fileset|filebase64|templatefile|formatdate|timeadd|timestamp|base64sha256|base64sha512|bcrypt|filebase64sha256|filebase64sha512|filemd5|filemd1|filesha256|filesha512|md5|rsadecrypt|sha1|sha256|sha512|uuid|uuidv5|cidrhost|cidrnetmask|cidrsubnet|tobool|tolist|tomap|tonumber|toset|tostring)/, terraformFunctions: /(abs|ceil|floor|log|max|min|pow|signum|chomp|format|formatlist|indent|join|lower|regex|regexall|replace|split|strrev|substr|title|trimspace|upper|chunklist|coalesce|coalescelist|compact|concat|contains|distinct|element|flatten|index|keys|length|list|lookup|map|matchkeys|merge|range|reverse|setintersection|setproduct|setunion|slice|sort|transpose|values|zipmap|base64decode|base64encode|base64gzip|csvdecode|jsondecode|jsonencode|urlencode|yamldecode|yamlencode|abspath|dirname|pathexpand|basename|file|fileexists|fileset|filebase64|templatefile|formatdate|timeadd|timestamp|base64sha256|base64sha512|bcrypt|filebase64sha256|filebase64sha512|filemd5|filemd1|filesha256|filesha512|md5|rsadecrypt|sha1|sha256|sha512|uuid|uuidv5|cidrhost|cidrnetmask|cidrsubnet|tobool|tolist|tomap|tonumber|toset|tostring)/,
terraformMainBlocks: /(module|data|terraform|resource|provider|variable|output|locals)/, terraformMainBlocks: /(module|data|terraform|resource|provider|variable|output|locals)/,
tokenizer: { tokenizer: {
root: [ root: [
// highlight main blocks // highlight main blocks
[ [
/^@terraformMainBlocks([ \t]*)([\w-]+|"[\w-]+"|)([ \t]*)([\w-]+|"[\w-]+"|)([ \t]*)(\{)/, /^@terraformMainBlocks([ \t]*)([\w-]+|"[\w-]+"|)([ \t]*)([\w-]+|"[\w-]+"|)([ \t]*)(\{)/,
[ ['type', '', 'string', '', 'string', '', '@brackets']
"type", ],
"", // highlight all the remaining blocks
"string", [
"", /(\w+[ \t]+)([ \t]*)([\w-]+|"[\w-]+"|)([ \t]*)([\w-]+|"[\w-]+"|)([ \t]*)(\{)/,
"string", ['identifier', '', 'string', '', 'string', '', '@brackets']
"", ],
"@brackets", // highlight block
], [
], /(\w+[ \t]+)([ \t]*)([\w-]+|"[\w-]+"|)([ \t]*)([\w-]+|"[\w-]+"|)(=)(\{)/,
// highlight all the remaining blocks ['identifier', '', 'string', '', 'operator', '', '@brackets']
[ ],
/(\w+[ \t]+)([ \t]*)([\w-]+|"[\w-]+"|)([ \t]*)([\w-]+|"[\w-]+"|)([ \t]*)(\{)/, // terraform general highlight - shared with expressions
[ { include: '@terraform' }
"identifier", ],
"", terraform: [
"string", // highlight terraform functions
"", [/@terraformFunctions(\()/, ['type', '@brackets']],
"string", // all other words are variables or keywords
"", [
"@brackets", /[a-zA-Z_]\w*-*/, // must work with variables such as foo-bar and also with negative numbers
], {
], cases: {
// highlight block '@keywords': { token: 'keyword.$0' },
[ '@default': 'variable'
/(\w+[ \t]+)([ \t]*)([\w-]+|"[\w-]+"|)([ \t]*)([\w-]+|"[\w-]+"|)(=)(\{)/, }
[ }
"identifier", ],
"", { include: '@whitespace' },
"string", { include: '@heredoc' },
"", // delimiters and operators
"operator", [/[{}()\[\]]/, '@brackets'],
"", [/[<>](?!@symbols)/, '@brackets'],
"@brackets", [
], /@symbols/,
], {
// terraform general highlight - shared with expressions cases: {
{ include: "@terraform" }, '@operators': 'operator',
], '@default': ''
terraform : [ }
// highlight terraform functions }
[/@terraformFunctions(\()/, ['type', '@brackets']], ],
// all other words are variables or keywords // numbers
[ [/\d*\d+[eE]([\-+]?\d+)?/, 'number.float'],
/[a-zA-Z_]\w*-*/, // must work with variables such as foo-bar and also with negative numbers [/\d*\.\d+([eE][\-+]?\d+)?/, 'number.float'],
{ [/\d[\d']*/, 'number'],
cases: { [/\d/, 'number'],
"@keywords": { token: "keyword.$0" }, [/[;,.]/, 'delimiter'], // delimiter: after number because of .\d floats
"@default": "variable", // strings
}, [/"/, 'string', '@string'], // this will include expressions
}, [/'/, 'invalid']
], ],
{ include: "@whitespace" }, heredoc: [
{ include: '@heredoc' }, [
// delimiters and operators /<<[-]*\s*["]?([\w\-]+)["]?/,
[/[{}()\[\]]/, "@brackets"], { token: 'string.heredoc.delimiter', next: '@heredocBody.$1' }
[/[<>](?!@symbols)/, "@brackets"], ]
[ ],
/@symbols/, heredocBody: [
{ [
cases: { /^([\w\-]+)$/,
"@operators": "operator", {
"@default": "", cases: {
}, '$1==$S2': [
}, {
], token: 'string.heredoc.delimiter',
// numbers next: '@popall'
[/\d*\d+[eE]([\-+]?\d+)?/, "number.float"], }
[/\d*\.\d+([eE][\-+]?\d+)?/, "number.float"], ],
[/\d[\d']*/, "number"], '@default': 'string.heredoc'
[/\d/, "number"], }
[/[;,.]/, "delimiter"], // delimiter: after number because of .\d floats }
// strings ],
[/"/, "string", "@string"], // this will include expressions [/./, 'string.heredoc']
[/'/, "invalid"], ],
], whitespace: [
heredoc: [ [/[ \t\r\n]+/, ''],
[ [/\/\*/, 'comment', '@comment'],
/<<[-]*\s*["]?([\w\-]+)["]?/, [/\/\/.*$/, 'comment'],
{ token: 'string.heredoc.delimiter', next: '@heredocBody.$1' }, [/#.*$/, 'comment']
], ],
], comment: [
heredocBody: [ [/[^\/*]+/, 'comment'],
[ [/\*\//, 'comment', '@pop'],
/^([\w\-]+)$/, [/[\/*]/, 'comment']
{ ],
cases: { string: [
'$1==$S2': [{ token: 'string.heredoc.delimiter', next: '@popall' }], [/\$\{/, { token: 'delimiter', next: '@stringExpression' }],
'@default': 'string.heredoc', [/[^\\"\$]+/, 'string'],
}, [/@escapes/, 'string.escape'],
}, [/\\./, 'string.escape.invalid'],
], [/"/, 'string', '@popall']
[/./, 'string.heredoc'], ],
], stringInsideExpression: [
whitespace: [ [/[^\\"]+/, 'string'],
[/[ \t\r\n]+/, ""], [/@escapes/, 'string.escape'],
[/\/\*/, "comment", "@comment"], [/\\./, 'string.escape.invalid'],
[/\/\/.*$/, "comment"], [/"/, 'string', '@pop']
[/#.*$/, "comment"], ],
], stringExpression: [
comment: [ [/\}/, { token: 'delimiter', next: '@pop' }],
[/[^\/*]+/, "comment"], [/"/, 'string', '@stringInsideExpression'],
[/\*\//, "comment", "@pop"], { include: '@terraform' }
[/[\/*]/, "comment"], ]
], }
string: [
[/\$\{/, { token: "delimiter", next: "@stringExpression" }],
[/[^\\"\$]+/, "string"],
[/@escapes/, "string.escape"],
[/\\./, "string.escape.invalid"],
[/"/, "string", "@popall"],
],
stringInsideExpression: [
[/[^\\"]+/, "string"],
[/@escapes/, "string.escape"],
[/\\./, "string.escape.invalid"],
[/"/, "string", "@pop"],
],
stringExpression: [
[/\}/, { token: "delimiter", next: "@pop" }],
[/"/, "string", "@stringInsideExpression"],
{ include: "@terraform" },
],
},
}; };