diff --git a/libraries/highlightjs/terraform.js b/libraries/highlightjs/terraform.js new file mode 100644 index 000000000..1874b795d --- /dev/null +++ b/libraries/highlightjs/terraform.js @@ -0,0 +1,87 @@ +/* + * highlight.js terraform syntax highlighting definition + * + * @see https://github.com/highlightjs/highlight.js + * + * :TODO: + * + * @package: highlightjs-terraform + * @author: Nikos Tsirmirakis + * @since: 2019-03-20 + * + * Description: Terraform (HCL) language definition + * Category: scripting + */ + +var module = module ? module : {}; // shim for browser use + +function hljsDefineTerraform(hljs) { + var NUMBERS = { + className: 'number', + begin: '\\b\\d+(\\.\\d+)?', + relevance: 0 + }; + var STRINGS = { + className: 'string', + begin: '"', + end: '"', + contains: [{ + className: 'variable', + begin: '\\${', + end: '\\}', + relevance: 9, + contains: [{ + className: 'string', + begin: '"', + end: '"' + }, { + className: 'meta', + begin: '[A-Za-z_0-9]*' + '\\(', + end: '\\)', + contains: [ + NUMBERS, { + className: 'string', + begin: '"', + end: '"', + contains: [{ + className: 'variable', + begin: '\\${', + end: '\\}', + contains: [{ + className: 'string', + begin: '"', + end: '"', + contains: [{ + className: 'variable', + begin: '\\${', + end: '\\}' + }] + }, { + className: 'meta', + begin: '[A-Za-z_0-9]*' + '\\(', + end: '\\)' + }] + }] + }, + 'self'] + }] + }] + }; + +return { + aliases: ['tf', 'hcl'], + keywords: 'resource variable provider output locals module data terraform|10', + literal: 'false true null', + contains: [ + hljs.COMMENT('\\#', '$'), + NUMBERS, + STRINGS + ] +} +} + +module.exports = function(hljs) { + hljs.registerLanguage('terraform', hljsDefineTerraform); +}; + +module.exports.definer = hljsDefineTerraform; \ No newline at end of file