|
@@ -0,0 +1,1201 @@
|
|
|
+/*---------------------------------------------------------------------------------------------
|
|
|
+ * Copyright (c) Microsoft Corporation. All rights reserved.
|
|
|
+ * Licensed under the MIT License. See License.txt in the project root for license information.
|
|
|
+ *--------------------------------------------------------------------------------------------*/
|
|
|
+
|
|
|
+"use strict";
|
|
|
+
|
|
|
+import { testTokenization } from "../test/testRunner";
|
|
|
+
|
|
|
+testTokenization("hcl", [
|
|
|
+ /*
|
|
|
+ // Foo
|
|
|
+ /* Bar */
|
|
|
+ /*
|
|
|
+ /*
|
|
|
+ Baz
|
|
|
+ *\/
|
|
|
+ # Another
|
|
|
+
|
|
|
+ # Multiple
|
|
|
+ # Lines
|
|
|
+ foo = "bar"
|
|
|
+ */
|
|
|
+ [
|
|
|
+ {
|
|
|
+ line: "// Foo",
|
|
|
+ tokens: [{ startIndex: 0, type: "comment.hcl" }],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ line: "/* Bar */",
|
|
|
+ tokens: [{ startIndex: 0, type: "comment.hcl" }],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ line: "/*",
|
|
|
+ tokens: [{ startIndex: 0, type: "comment.hcl" }],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ line: "/*",
|
|
|
+ tokens: [{ startIndex: 0, type: "comment.hcl" }],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ line: "Baz",
|
|
|
+ tokens: [{ startIndex: 0, type: "comment.hcl" }],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ line: "*/",
|
|
|
+ tokens: [{ startIndex: 0, type: "comment.hcl" }],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ line: "# Another",
|
|
|
+ tokens: [{ startIndex: 0, type: "comment.hcl" }],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ line: "",
|
|
|
+ tokens: [],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ line: "# Multiple",
|
|
|
+ tokens: [{ startIndex: 0, type: "comment.hcl" }],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ line: "# Lines",
|
|
|
+ tokens: [{ startIndex: 0, type: "comment.hcl" }],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ line: 'foo = "bar"',
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "variable.hcl" },
|
|
|
+ { startIndex: 3, type: "" },
|
|
|
+ { startIndex: 4, type: "operator.hcl" },
|
|
|
+ { startIndex: 5, type: "" },
|
|
|
+ { startIndex: 6, type: "string.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+
|
|
|
+ [
|
|
|
+ {
|
|
|
+ line: "",
|
|
|
+ tokens: [],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+
|
|
|
+ /*
|
|
|
+ foo = [
|
|
|
+ "1",
|
|
|
+ "2", # comment
|
|
|
+ ]
|
|
|
+ */
|
|
|
+ [
|
|
|
+ {
|
|
|
+ line: "foo = [",
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "variable.hcl" },
|
|
|
+ { startIndex: 3, type: "" },
|
|
|
+ { startIndex: 4, type: "operator.hcl" },
|
|
|
+ { startIndex: 5, type: "" },
|
|
|
+ { startIndex: 6, type: "delimiter.square.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ line: '"1",',
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "string.hcl" },
|
|
|
+ { startIndex: 3, type: "delimiter.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ line: '"2", # comment',
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "string.hcl" },
|
|
|
+ { startIndex: 3, type: "delimiter.hcl" },
|
|
|
+ { startIndex: 4, type: "" },
|
|
|
+ { startIndex: 5, type: "comment.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ line: "]",
|
|
|
+ tokens: [{ startIndex: 0, type: "delimiter.square.hcl" }],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+
|
|
|
+ /*
|
|
|
+ resource = [{
|
|
|
+ "foo": {
|
|
|
+ "bar": {},
|
|
|
+ "baz": [1, 2, "foo"],
|
|
|
+ }
|
|
|
+ }]
|
|
|
+ */
|
|
|
+ [
|
|
|
+ {
|
|
|
+ line: "resource = [{",
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "variable.hcl" },
|
|
|
+ { startIndex: 8, type: "" },
|
|
|
+ { startIndex: 9, type: "operator.hcl" },
|
|
|
+ { startIndex: 10, type: "" },
|
|
|
+ { startIndex: 11, type: "delimiter.square.hcl" },
|
|
|
+ { startIndex: 12, type: "delimiter.curly.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ line: '"foo": {',
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "string.hcl" },
|
|
|
+ { startIndex: 5, type: "operator.hcl" },
|
|
|
+ { startIndex: 6, type: "" },
|
|
|
+ { startIndex: 7, type: "delimiter.curly.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ line: '"bar": {},',
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "string.hcl" },
|
|
|
+ { startIndex: 5, type: "operator.hcl" },
|
|
|
+ { startIndex: 6, type: "" },
|
|
|
+ { startIndex: 7, type: "delimiter.curly.hcl" },
|
|
|
+ { startIndex: 9, type: "delimiter.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ line: '"baz": [1, 2, "foo"],',
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "string.hcl" },
|
|
|
+ { startIndex: 5, type: "operator.hcl" },
|
|
|
+ { startIndex: 6, type: "" },
|
|
|
+ { startIndex: 7, type: "delimiter.square.hcl" },
|
|
|
+ { startIndex: 8, type: "number.hcl" },
|
|
|
+ { startIndex: 9, type: "delimiter.hcl" },
|
|
|
+ { startIndex: 10, type: "" },
|
|
|
+ { startIndex: 11, type: "number.hcl" },
|
|
|
+ { startIndex: 12, type: "delimiter.hcl" },
|
|
|
+ { startIndex: 13, type: "" },
|
|
|
+ { startIndex: 14, type: "string.hcl" },
|
|
|
+ { startIndex: 19, type: "delimiter.square.hcl" },
|
|
|
+ { startIndex: 20, type: "delimiter.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ line: "}",
|
|
|
+ tokens: [{ startIndex: 0, type: "delimiter.curly.hcl" }],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ line: "}]",
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "delimiter.curly.hcl" },
|
|
|
+ { startIndex: 1, type: "delimiter.square.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+
|
|
|
+ /*
|
|
|
+ variable "foo" {
|
|
|
+ default = "bar"
|
|
|
+ description = "bar"
|
|
|
+ }
|
|
|
+ */
|
|
|
+ [
|
|
|
+ {
|
|
|
+ line: 'variable "foo" {',
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "type.hcl" },
|
|
|
+ { startIndex: 8, type: "" },
|
|
|
+ { startIndex: 9, type: "string.hcl" },
|
|
|
+ { startIndex: 14, type: "" },
|
|
|
+ { startIndex: 15, type: "delimiter.curly.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ line: ' default = "bar"',
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "" },
|
|
|
+ { startIndex: 2, type: "variable.hcl" },
|
|
|
+ { startIndex: 9, type: "" },
|
|
|
+ { startIndex: 10, type: "operator.hcl" },
|
|
|
+ { startIndex: 11, type: "" },
|
|
|
+ { startIndex: 12, type: "string.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ line: ' description = "bar"',
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "" },
|
|
|
+ { startIndex: 2, type: "variable.hcl" },
|
|
|
+ { startIndex: 13, type: "" },
|
|
|
+ { startIndex: 14, type: "operator.hcl" },
|
|
|
+ { startIndex: 15, type: "" },
|
|
|
+ { startIndex: 16, type: "string.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ line: "}",
|
|
|
+ tokens: [{ startIndex: 0, type: "delimiter.curly.hcl" }],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ {
|
|
|
+ line: 'provider "aws" {',
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "type.hcl" },
|
|
|
+ { startIndex: 8, type: "" },
|
|
|
+ { startIndex: 9, type: "string.hcl" },
|
|
|
+ { startIndex: 14, type: "" },
|
|
|
+ { startIndex: 15, type: "delimiter.curly.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ /*
|
|
|
+ provider "do" {
|
|
|
+ api_key = "${var.foo}"
|
|
|
+ }
|
|
|
+ */
|
|
|
+ [
|
|
|
+ {
|
|
|
+ line: 'provider "do" {',
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "type.hcl" },
|
|
|
+ { startIndex: 8, type: "" },
|
|
|
+ { startIndex: 9, type: "string.hcl" },
|
|
|
+ { startIndex: 13, type: "" },
|
|
|
+ { startIndex: 14, type: "delimiter.curly.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ line: ' api_key = "${var.foo}"',
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "" },
|
|
|
+ { startIndex: 2, type: "variable.hcl" },
|
|
|
+ { startIndex: 9, type: "" },
|
|
|
+ { startIndex: 10, type: "operator.hcl" },
|
|
|
+ { startIndex: 11, type: "" },
|
|
|
+ { startIndex: 12, type: "string.hcl" },
|
|
|
+ { startIndex: 13, type: "delimiter.hcl" },
|
|
|
+ { startIndex: 15, type: "keyword.var.hcl" },
|
|
|
+ { startIndex: 18, type: "delimiter.hcl" },
|
|
|
+ { startIndex: 19, type: "variable.hcl" },
|
|
|
+ { startIndex: 22, type: "delimiter.hcl" },
|
|
|
+ { startIndex: 23, type: "string.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ line: "}",
|
|
|
+ tokens: [{ startIndex: 0, type: "delimiter.curly.hcl" }],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ /*
|
|
|
+ resource "aws_security_group" "firewall" {
|
|
|
+ count = 5
|
|
|
+ }
|
|
|
+ */
|
|
|
+ [
|
|
|
+ {
|
|
|
+ line: 'resource "aws_security_group" "firewall" {',
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "type.hcl" },
|
|
|
+ { startIndex: 8, type: "" },
|
|
|
+ { startIndex: 9, type: "string.hcl" },
|
|
|
+ { startIndex: 29, type: "" },
|
|
|
+ { startIndex: 30, type: "string.hcl" },
|
|
|
+ { startIndex: 40, type: "" },
|
|
|
+ { startIndex: 41, type: "delimiter.curly.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ line: " count = 5",
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "" },
|
|
|
+ { startIndex: 2, type: "variable.hcl" },
|
|
|
+ { startIndex: 7, type: "" },
|
|
|
+ { startIndex: 8, type: "operator.hcl" },
|
|
|
+ { startIndex: 9, type: "" },
|
|
|
+ { startIndex: 10, type: "number.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ line: "}",
|
|
|
+ tokens: [{ startIndex: 0, type: "delimiter.curly.hcl" }],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ {
|
|
|
+ line: "resource aws_security_group firewall {",
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "type.hcl" },
|
|
|
+ { startIndex: 8, type: "" },
|
|
|
+ { startIndex: 9, type: "string.hcl" },
|
|
|
+ { startIndex: 27, type: "" },
|
|
|
+ { startIndex: 28, type: "string.hcl" },
|
|
|
+ { startIndex: 36, type: "" },
|
|
|
+ { startIndex: 37, type: "delimiter.curly.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ {
|
|
|
+ line: 'resource "aws_security_group" firewall {',
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "type.hcl" },
|
|
|
+ { startIndex: 8, type: "" },
|
|
|
+ { startIndex: 9, type: "string.hcl" },
|
|
|
+ { startIndex: 29, type: "" },
|
|
|
+ { startIndex: 30, type: "string.hcl" },
|
|
|
+ { startIndex: 38, type: "" },
|
|
|
+ { startIndex: 39, type: "delimiter.curly.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ {
|
|
|
+ line: 'resource aws_security_group "firewall" {',
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "type.hcl" },
|
|
|
+ { startIndex: 8, type: "" },
|
|
|
+ { startIndex: 9, type: "string.hcl" },
|
|
|
+ { startIndex: 27, type: "" },
|
|
|
+ { startIndex: 28, type: "string.hcl" },
|
|
|
+ { startIndex: 38, type: "" },
|
|
|
+ { startIndex: 39, type: "delimiter.curly.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ /*
|
|
|
+ resource aws_instance "web" {
|
|
|
+ ami = "${var.foo}"
|
|
|
+ security_groups = [
|
|
|
+ "foo",
|
|
|
+ "${aws_security_group.firewall.foo}"
|
|
|
+ ]
|
|
|
+ network_interface {
|
|
|
+ device_index = 0
|
|
|
+ description = "Main network interface"
|
|
|
+ }
|
|
|
+ }
|
|
|
+ */
|
|
|
+ [
|
|
|
+ {
|
|
|
+ line: 'resource aws_instance "web" {',
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "type.hcl" },
|
|
|
+ { startIndex: 8, type: "" },
|
|
|
+ { startIndex: 9, type: "string.hcl" },
|
|
|
+ { startIndex: 21, type: "" },
|
|
|
+ { startIndex: 22, type: "string.hcl" },
|
|
|
+ { startIndex: 27, type: "" },
|
|
|
+ { startIndex: 28, type: "delimiter.curly.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ line: ' ami = "${var.foo}"',
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "" },
|
|
|
+ { startIndex: 2, type: "variable.hcl" },
|
|
|
+ { startIndex: 5, type: "" },
|
|
|
+ { startIndex: 6, type: "operator.hcl" },
|
|
|
+ { startIndex: 7, type: "" },
|
|
|
+ { startIndex: 8, type: "string.hcl" },
|
|
|
+ { startIndex: 9, type: "delimiter.hcl" },
|
|
|
+ { startIndex: 11, type: "keyword.var.hcl" },
|
|
|
+ { startIndex: 14, type: "delimiter.hcl" },
|
|
|
+ { startIndex: 15, type: "variable.hcl" },
|
|
|
+ { startIndex: 18, type: "delimiter.hcl" },
|
|
|
+ { startIndex: 19, type: "string.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ line: " security_groups = [",
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "" },
|
|
|
+ { startIndex: 2, type: "variable.hcl" },
|
|
|
+ { startIndex: 17, type: "" },
|
|
|
+ { startIndex: 18, type: "operator.hcl" },
|
|
|
+ { startIndex: 19, type: "" },
|
|
|
+ { startIndex: 20, type: "delimiter.square.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ line: ' "foo",',
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "" },
|
|
|
+ { startIndex: 4, type: "string.hcl" },
|
|
|
+ { startIndex: 9, type: "delimiter.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ line: ' "${aws_security_group.firewall.foo}"',
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "" },
|
|
|
+ { startIndex: 4, type: "string.hcl" },
|
|
|
+ { startIndex: 5, type: "delimiter.hcl" },
|
|
|
+ { startIndex: 7, type: "variable.hcl" },
|
|
|
+ { startIndex: 25, type: "delimiter.hcl" },
|
|
|
+ { startIndex: 26, type: "variable.hcl" },
|
|
|
+ { startIndex: 34, type: "delimiter.hcl" },
|
|
|
+ { startIndex: 35, type: "variable.hcl" },
|
|
|
+ { startIndex: 38, type: "delimiter.hcl" },
|
|
|
+ { startIndex: 39, type: "string.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ line: " ]",
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "" },
|
|
|
+ { startIndex: 2, type: "delimiter.square.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ line: " network_interface {",
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "" },
|
|
|
+ { startIndex: 2, type: "identifier.hcl" },
|
|
|
+ { startIndex: 20, type: "delimiter.curly.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ line: " device_index = 0",
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "" },
|
|
|
+ { startIndex: 4, type: "variable.hcl" },
|
|
|
+ { startIndex: 16, type: "" },
|
|
|
+ { startIndex: 17, type: "operator.hcl" },
|
|
|
+ { startIndex: 18, type: "" },
|
|
|
+ { startIndex: 19, type: "number.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ line: ' description = "Main network interface"',
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "" },
|
|
|
+ { startIndex: 4, type: "variable.hcl" },
|
|
|
+ { startIndex: 15, type: "" },
|
|
|
+ { startIndex: 16, type: "operator.hcl" },
|
|
|
+ { startIndex: 17, type: "" },
|
|
|
+ { startIndex: 18, type: "string.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ line: " }",
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "" },
|
|
|
+ { startIndex: 2, type: "delimiter.curly.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ line: "}",
|
|
|
+ tokens: [{ startIndex: 0, type: "delimiter.curly.hcl" }],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ /*
|
|
|
+ resource "aws_instance" "db" {
|
|
|
+ security_groups = "${aws_security_group.firewall.*.id}"
|
|
|
+ VPC = "foo"
|
|
|
+ depends_on = ["aws_instance.web"]
|
|
|
+ }
|
|
|
+ */
|
|
|
+ [
|
|
|
+ {
|
|
|
+ line: 'resource "aws_instance" "db" {',
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "type.hcl" },
|
|
|
+ { startIndex: 8, type: "" },
|
|
|
+ { startIndex: 9, type: "string.hcl" },
|
|
|
+ { startIndex: 23, type: "" },
|
|
|
+ { startIndex: 24, type: "string.hcl" },
|
|
|
+ { startIndex: 28, type: "" },
|
|
|
+ { startIndex: 29, type: "delimiter.curly.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ line: ' security_groups = "${aws_security_group.firewall.*.id}"',
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "" },
|
|
|
+ { startIndex: 2, type: "variable.hcl" },
|
|
|
+ { startIndex: 17, type: "" },
|
|
|
+ { startIndex: 18, type: "operator.hcl" },
|
|
|
+ { startIndex: 19, type: "" },
|
|
|
+ { startIndex: 20, type: "string.hcl" },
|
|
|
+ { startIndex: 21, type: "delimiter.hcl" },
|
|
|
+ { startIndex: 23, type: "variable.hcl" },
|
|
|
+ { startIndex: 41, type: "delimiter.hcl" },
|
|
|
+ { startIndex: 42, type: "variable.hcl" },
|
|
|
+ { startIndex: 50, type: "delimiter.hcl" },
|
|
|
+ { startIndex: 51, type: "operator.hcl" },
|
|
|
+ { startIndex: 52, type: "delimiter.hcl" },
|
|
|
+ { startIndex: 53, type: "variable.hcl" },
|
|
|
+ { startIndex: 55, type: "delimiter.hcl" },
|
|
|
+ { startIndex: 56, type: "string.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ line: ' VPC = "foo"',
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "" },
|
|
|
+ { startIndex: 2, type: "variable.hcl" },
|
|
|
+ { startIndex: 5, type: "" },
|
|
|
+ { startIndex: 6, type: "operator.hcl" },
|
|
|
+ { startIndex: 7, type: "" },
|
|
|
+ { startIndex: 8, type: "string.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ line: ' depends_on = ["aws_instance.web"]',
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "" },
|
|
|
+ { startIndex: 2, type: "variable.hcl" },
|
|
|
+ { startIndex: 12, type: "" },
|
|
|
+ { startIndex: 13, type: "operator.hcl" },
|
|
|
+ { startIndex: 14, type: "" },
|
|
|
+ { startIndex: 15, type: "delimiter.square.hcl" },
|
|
|
+ { startIndex: 16, type: "string.hcl" },
|
|
|
+ { startIndex: 34, type: "delimiter.square.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ line: "}",
|
|
|
+ tokens: [{ startIndex: 0, type: "delimiter.curly.hcl" }],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ /*
|
|
|
+ output "web_ip" {
|
|
|
+ value = "${aws_instance.web.private_ip}"
|
|
|
+ }
|
|
|
+ */
|
|
|
+ [
|
|
|
+ {
|
|
|
+ line: 'output "web_ip" {',
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "type.hcl" },
|
|
|
+ { startIndex: 6, type: "" },
|
|
|
+ { startIndex: 7, type: "string.hcl" },
|
|
|
+ { startIndex: 15, type: "" },
|
|
|
+ { startIndex: 16, type: "delimiter.curly.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ line: 'value = "${aws_instance.web.private_ip}"',
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "variable.hcl" },
|
|
|
+ { startIndex: 5, type: "" },
|
|
|
+ { startIndex: 6, type: "operator.hcl" },
|
|
|
+ { startIndex: 7, type: "" },
|
|
|
+ { startIndex: 8, type: "string.hcl" },
|
|
|
+ { startIndex: 9, type: "delimiter.hcl" },
|
|
|
+ { startIndex: 11, type: "variable.hcl" },
|
|
|
+ { startIndex: 23, type: "delimiter.hcl" },
|
|
|
+ { startIndex: 24, type: "variable.hcl" },
|
|
|
+ { startIndex: 27, type: "delimiter.hcl" },
|
|
|
+ { startIndex: 28, type: "variable.hcl" },
|
|
|
+ { startIndex: 38, type: "delimiter.hcl" },
|
|
|
+ { startIndex: 39, type: "string.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ line: "}",
|
|
|
+ tokens: [{ startIndex: 0, type: "delimiter.curly.hcl" }],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+
|
|
|
+ [
|
|
|
+ {
|
|
|
+ line: 'foo = [1, 2, "foo"]',
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "variable.hcl" },
|
|
|
+ { startIndex: 3, type: "" },
|
|
|
+ { startIndex: 4, type: "operator.hcl" },
|
|
|
+ { startIndex: 5, type: "" },
|
|
|
+ { startIndex: 6, type: "delimiter.square.hcl" },
|
|
|
+ { startIndex: 7, type: "number.hcl" },
|
|
|
+ { startIndex: 8, type: "delimiter.hcl" },
|
|
|
+ { startIndex: 9, type: "" },
|
|
|
+ { startIndex: 10, type: "number.hcl" },
|
|
|
+ { startIndex: 11, type: "delimiter.hcl" },
|
|
|
+ { startIndex: 12, type: "" },
|
|
|
+ { startIndex: 13, type: "string.hcl" },
|
|
|
+ { startIndex: 18, type: "delimiter.square.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ {
|
|
|
+ line: 'foo = [1, 2, "foo",]',
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "variable.hcl" },
|
|
|
+ { startIndex: 3, type: "" },
|
|
|
+ { startIndex: 4, type: "operator.hcl" },
|
|
|
+ { startIndex: 5, type: "" },
|
|
|
+ { startIndex: 6, type: "delimiter.square.hcl" },
|
|
|
+ { startIndex: 7, type: "number.hcl" },
|
|
|
+ { startIndex: 8, type: "delimiter.hcl" },
|
|
|
+ { startIndex: 9, type: "" },
|
|
|
+ { startIndex: 10, type: "number.hcl" },
|
|
|
+ { startIndex: 11, type: "delimiter.hcl" },
|
|
|
+ { startIndex: 12, type: "" },
|
|
|
+ { startIndex: 13, type: "string.hcl" },
|
|
|
+ { startIndex: 18, type: "delimiter.hcl" },
|
|
|
+ { startIndex: 19, type: "delimiter.square.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ /*
|
|
|
+ default = {
|
|
|
+ "eu-west-1": "ami-b1cf19c6",
|
|
|
+ }
|
|
|
+ */
|
|
|
+ [
|
|
|
+ {
|
|
|
+ line: "default = {",
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "variable.hcl" },
|
|
|
+ { startIndex: 7, type: "" },
|
|
|
+ { startIndex: 8, type: "operator.hcl" },
|
|
|
+ { startIndex: 9, type: "" },
|
|
|
+ { startIndex: 10, type: "delimiter.curly.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ line: ' "eu-west-1": "ami-b1cf19c6",',
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "" },
|
|
|
+ { startIndex: 2, type: "string.hcl" },
|
|
|
+ { startIndex: 13, type: "operator.hcl" },
|
|
|
+ { startIndex: 14, type: "" },
|
|
|
+ { startIndex: 15, type: "string.hcl" },
|
|
|
+ { startIndex: 29, type: "delimiter.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ line: "}",
|
|
|
+ tokens: [{ startIndex: 0, type: "delimiter.curly.hcl" }],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ {
|
|
|
+ line: 'resource "foo" "bar" {}',
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "type.hcl" },
|
|
|
+ { startIndex: 8, type: "" },
|
|
|
+ { startIndex: 9, type: "string.hcl" },
|
|
|
+ { startIndex: 14, type: "" },
|
|
|
+ { startIndex: 15, type: "string.hcl" },
|
|
|
+ { startIndex: 20, type: "" },
|
|
|
+ { startIndex: 21, type: "delimiter.curly.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ {
|
|
|
+ line: 'foo = "bar"',
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "variable.hcl" },
|
|
|
+ { startIndex: 3, type: "" },
|
|
|
+ { startIndex: 4, type: "operator.hcl" },
|
|
|
+ { startIndex: 5, type: "" },
|
|
|
+ { startIndex: 6, type: "string.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ {
|
|
|
+ line: "bar = 7",
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "variable.hcl" },
|
|
|
+ { startIndex: 3, type: "" },
|
|
|
+ { startIndex: 4, type: "operator.hcl" },
|
|
|
+ { startIndex: 5, type: "" },
|
|
|
+ { startIndex: 6, type: "number.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ {
|
|
|
+ line: "baz = [1,2,3]",
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "variable.hcl" },
|
|
|
+ { startIndex: 3, type: "" },
|
|
|
+ { startIndex: 4, type: "operator.hcl" },
|
|
|
+ { startIndex: 5, type: "" },
|
|
|
+ { startIndex: 6, type: "delimiter.square.hcl" },
|
|
|
+ { startIndex: 7, type: "number.hcl" },
|
|
|
+ { startIndex: 8, type: "delimiter.hcl" },
|
|
|
+ { startIndex: 9, type: "number.hcl" },
|
|
|
+ { startIndex: 10, type: "delimiter.hcl" },
|
|
|
+ { startIndex: 11, type: "number.hcl" },
|
|
|
+ { startIndex: 12, type: "delimiter.square.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ {
|
|
|
+ line: "foo = -12",
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "variable.hcl" },
|
|
|
+ { startIndex: 3, type: "" },
|
|
|
+ { startIndex: 4, type: "operator.hcl" },
|
|
|
+ { startIndex: 5, type: "" },
|
|
|
+ { startIndex: 6, type: "operator.hcl" },
|
|
|
+ { startIndex: 7, type: "number.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ {
|
|
|
+ line: "bar = 3.14159",
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "variable.hcl" },
|
|
|
+ { startIndex: 3, type: "" },
|
|
|
+ { startIndex: 4, type: "operator.hcl" },
|
|
|
+ { startIndex: 5, type: "" },
|
|
|
+ { startIndex: 6, type: "number.float.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ {
|
|
|
+ line: "foo = true",
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "variable.hcl" },
|
|
|
+ { startIndex: 3, type: "" },
|
|
|
+ { startIndex: 4, type: "operator.hcl" },
|
|
|
+ { startIndex: 5, type: "" },
|
|
|
+ { startIndex: 6, type: "keyword.true.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ {
|
|
|
+ line: "bar = false",
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "variable.hcl" },
|
|
|
+ { startIndex: 3, type: "" },
|
|
|
+ { startIndex: 4, type: "operator.hcl" },
|
|
|
+ { startIndex: 5, type: "" },
|
|
|
+ { startIndex: 6, type: "keyword.false.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ /*
|
|
|
+ resource = [{
|
|
|
+ foo = [{
|
|
|
+ bar = {}
|
|
|
+ }]
|
|
|
+ }]
|
|
|
+ */
|
|
|
+ [
|
|
|
+ {
|
|
|
+ line: "resource = [{",
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "variable.hcl" },
|
|
|
+ { startIndex: 8, type: "" },
|
|
|
+ { startIndex: 9, type: "operator.hcl" },
|
|
|
+ { startIndex: 10, type: "" },
|
|
|
+ { startIndex: 11, type: "delimiter.square.hcl" },
|
|
|
+ { startIndex: 12, type: "delimiter.curly.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ line: " foo = [{",
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "" },
|
|
|
+ { startIndex: 2, type: "variable.hcl" },
|
|
|
+ { startIndex: 5, type: "" },
|
|
|
+ { startIndex: 6, type: "operator.hcl" },
|
|
|
+ { startIndex: 7, type: "" },
|
|
|
+ { startIndex: 8, type: "delimiter.square.hcl" },
|
|
|
+ { startIndex: 9, type: "delimiter.curly.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ line: " bar = {}",
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "" },
|
|
|
+ { startIndex: 4, type: "variable.hcl" },
|
|
|
+ { startIndex: 7, type: "" },
|
|
|
+ { startIndex: 8, type: "operator.hcl" },
|
|
|
+ { startIndex: 9, type: "" },
|
|
|
+ { startIndex: 10, type: "delimiter.curly.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ line: " }]",
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "" },
|
|
|
+ { startIndex: 2, type: "delimiter.curly.hcl" },
|
|
|
+ { startIndex: 3, type: "delimiter.square.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ line: "}]",
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "delimiter.curly.hcl" },
|
|
|
+ { startIndex: 1, type: "delimiter.square.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ {
|
|
|
+ line: 'bar = "${file("bing/bong.txt")}"',
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "variable.hcl" },
|
|
|
+ { startIndex: 3, type: "" },
|
|
|
+ { startIndex: 4, type: "operator.hcl" },
|
|
|
+ { startIndex: 5, type: "" },
|
|
|
+ { startIndex: 6, type: "string.hcl" },
|
|
|
+ { startIndex: 7, type: "delimiter.hcl" },
|
|
|
+ { startIndex: 9, type: "type.hcl" },
|
|
|
+ { startIndex: 13, type: "delimiter.parenthesis.hcl" },
|
|
|
+ { startIndex: 14, type: "string.hcl" },
|
|
|
+ { startIndex: 29, type: "delimiter.parenthesis.hcl" },
|
|
|
+ { startIndex: 30, type: "delimiter.hcl" },
|
|
|
+ { startIndex: 31, type: "string.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ {
|
|
|
+ line: 'foo-bar="baz"',
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "variable.hcl" },
|
|
|
+ { startIndex: 7, type: "operator.hcl" },
|
|
|
+ { startIndex: 8, type: "string.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ /*
|
|
|
+ key "foo/" {
|
|
|
+ policy = "write"
|
|
|
+ }
|
|
|
+ */
|
|
|
+ [
|
|
|
+ {
|
|
|
+ line: 'key "foo/" {',
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "variable.hcl" },
|
|
|
+ { startIndex: 3, type: "" },
|
|
|
+ { startIndex: 4, type: "string.hcl" },
|
|
|
+ { startIndex: 10, type: "" },
|
|
|
+ { startIndex: 11, type: "delimiter.curly.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ line: ' policy = "write"',
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "" },
|
|
|
+ { startIndex: 2, type: "variable.hcl" },
|
|
|
+ { startIndex: 8, type: "" },
|
|
|
+ { startIndex: 9, type: "operator.hcl" },
|
|
|
+ { startIndex: 10, type: "" },
|
|
|
+ { startIndex: 11, type: "string.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ line: "}",
|
|
|
+ tokens: [{ startIndex: 0, type: "delimiter.curly.hcl" }],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ {
|
|
|
+ line: 'foo = "bar\\"baz\\\\n"',
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "variable.hcl" },
|
|
|
+ { startIndex: 3, type: "" },
|
|
|
+ { startIndex: 4, type: "operator.hcl" },
|
|
|
+ { startIndex: 5, type: "" },
|
|
|
+ { startIndex: 6, type: "string.hcl" },
|
|
|
+ { startIndex: 10, type: "string.escape.hcl" },
|
|
|
+ { startIndex: 12, type: "string.hcl" },
|
|
|
+ { startIndex: 15, type: "string.escape.hcl" },
|
|
|
+ { startIndex: 17, type: "string.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ {
|
|
|
+ line: 'bar = "new\\nline"',
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "variable.hcl" },
|
|
|
+ { startIndex: 3, type: "" },
|
|
|
+ { startIndex: 4, type: "operator.hcl" },
|
|
|
+ { startIndex: 5, type: "" },
|
|
|
+ { startIndex: 6, type: "string.hcl" },
|
|
|
+ { startIndex: 10, type: "string.escape.hcl" },
|
|
|
+ { startIndex: 12, type: "string.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ {
|
|
|
+ line: 'qux = "back\\\\slash"',
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "variable.hcl" },
|
|
|
+ { startIndex: 3, type: "" },
|
|
|
+ { startIndex: 4, type: "operator.hcl" },
|
|
|
+ { startIndex: 5, type: "" },
|
|
|
+ { startIndex: 6, type: "string.hcl" },
|
|
|
+ { startIndex: 11, type: "string.escape.hcl" },
|
|
|
+ { startIndex: 13, type: "string.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ {
|
|
|
+ line: 'qax = "slash\\\\:colon"',
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "variable.hcl" },
|
|
|
+ { startIndex: 3, type: "" },
|
|
|
+ { startIndex: 4, type: "operator.hcl" },
|
|
|
+ { startIndex: 5, type: "" },
|
|
|
+ { startIndex: 6, type: "string.hcl" },
|
|
|
+ { startIndex: 12, type: "string.escape.hcl" },
|
|
|
+ { startIndex: 14, type: "string.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ {
|
|
|
+ line: 'nested = "${HH\\\\:mm\\\\:ss}"',
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "variable.hcl" },
|
|
|
+ { startIndex: 6, type: "" },
|
|
|
+ { startIndex: 7, type: "operator.hcl" },
|
|
|
+ { startIndex: 8, type: "" },
|
|
|
+ { startIndex: 9, type: "string.hcl" },
|
|
|
+ { startIndex: 10, type: "delimiter.hcl" },
|
|
|
+ { startIndex: 12, type: "variable.hcl" },
|
|
|
+ { startIndex: 14, type: "" },
|
|
|
+ { startIndex: 16, type: "operator.hcl" },
|
|
|
+ { startIndex: 17, type: "variable.hcl" },
|
|
|
+ { startIndex: 19, type: "" },
|
|
|
+ { startIndex: 21, type: "operator.hcl" },
|
|
|
+ { startIndex: 22, type: "variable.hcl" },
|
|
|
+ { startIndex: 24, type: "delimiter.hcl" },
|
|
|
+ { startIndex: 25, type: "string.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ {
|
|
|
+ line: 'nestedquotes = "${"\\"stringwrappedinquotes\\""}"',
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "variable.hcl" },
|
|
|
+ { startIndex: 12, type: "" },
|
|
|
+ { startIndex: 13, type: "operator.hcl" },
|
|
|
+ { startIndex: 14, type: "" },
|
|
|
+ { startIndex: 15, type: "string.hcl" },
|
|
|
+ { startIndex: 16, type: "delimiter.hcl" },
|
|
|
+ { startIndex: 18, type: "string.hcl" },
|
|
|
+ { startIndex: 19, type: "string.escape.hcl" },
|
|
|
+ { startIndex: 21, type: "string.hcl" },
|
|
|
+ { startIndex: 42, type: "string.escape.hcl" },
|
|
|
+ { startIndex: 44, type: "string.hcl" },
|
|
|
+ { startIndex: 45, type: "delimiter.hcl" },
|
|
|
+ { startIndex: 46, type: "string.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ /*
|
|
|
+ foo = <<EOF
|
|
|
+ bar
|
|
|
+ EOF
|
|
|
+ */
|
|
|
+ [
|
|
|
+ {
|
|
|
+ line: "foo = <<EOF",
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "variable.hcl" },
|
|
|
+ { startIndex: 3, type: "" },
|
|
|
+ { startIndex: 4, type: "operator.hcl" },
|
|
|
+ { startIndex: 5, type: "" },
|
|
|
+ { startIndex: 6, type: "string.heredoc.delimiter.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ line: "bar",
|
|
|
+ tokens: [{ startIndex: 0, type: "string.heredoc.hcl" }],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ line: "EOF",
|
|
|
+ tokens: [{ startIndex: 0, type: "string.heredoc.delimiter.hcl" }],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ {
|
|
|
+ line: "foo = <EOF",
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "variable.hcl" },
|
|
|
+ { startIndex: 3, type: "" },
|
|
|
+ { startIndex: 4, type: "operator.hcl" },
|
|
|
+ { startIndex: 5, type: "" },
|
|
|
+ { startIndex: 6, type: "delimiter.angle.hcl" },
|
|
|
+ { startIndex: 7, type: "variable.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ {
|
|
|
+ line: "foo = <<-EOF",
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "variable.hcl" },
|
|
|
+ { startIndex: 3, type: "" },
|
|
|
+ { startIndex: 4, type: "operator.hcl" },
|
|
|
+ { startIndex: 5, type: "" },
|
|
|
+ { startIndex: 6, type: "string.heredoc.delimiter.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ /*
|
|
|
+ multiline_literal = "hello
|
|
|
+ world"
|
|
|
+ foo = "bar"
|
|
|
+ */
|
|
|
+ [
|
|
|
+ {
|
|
|
+ line: 'multiline_literal = "hello',
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "variable.hcl" },
|
|
|
+ { startIndex: 17, type: "" },
|
|
|
+ { startIndex: 18, type: "operator.hcl" },
|
|
|
+ { startIndex: 19, type: "" },
|
|
|
+ { startIndex: 20, type: "string.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ line: ' world"',
|
|
|
+ tokens: [{ startIndex: 0, type: "string.hcl" }],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ line: 'foo = "bar"',
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "variable.hcl" },
|
|
|
+ { startIndex: 3, type: "" },
|
|
|
+ { startIndex: 4, type: "operator.hcl" },
|
|
|
+ { startIndex: 5, type: "" },
|
|
|
+ { startIndex: 6, type: "string.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ /*
|
|
|
+ multiline_literal_with_hil = "${hello
|
|
|
+ world}"
|
|
|
+ */
|
|
|
+ [
|
|
|
+ {
|
|
|
+ line: 'multiline_literal_with_hil = "${hello',
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "variable.hcl" },
|
|
|
+ { startIndex: 26, type: "" },
|
|
|
+ { startIndex: 27, type: "operator.hcl" },
|
|
|
+ { startIndex: 28, type: "" },
|
|
|
+ { startIndex: 29, type: "string.hcl" },
|
|
|
+ { startIndex: 30, type: "delimiter.hcl" },
|
|
|
+ { startIndex: 32, type: "variable.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ line: ' world}"',
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "" },
|
|
|
+ { startIndex: 1, type: "variable.hcl" },
|
|
|
+ { startIndex: 6, type: "delimiter.hcl" },
|
|
|
+ { startIndex: 7, type: "string.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ line: 'foo = "bar"',
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "variable.hcl" },
|
|
|
+ { startIndex: 3, type: "" },
|
|
|
+ { startIndex: 4, type: "operator.hcl" },
|
|
|
+ { startIndex: 5, type: "" },
|
|
|
+ { startIndex: 6, type: "string.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ // scientific numbers
|
|
|
+ [
|
|
|
+ {
|
|
|
+ line: "a = 1e-10",
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "variable.hcl" },
|
|
|
+ { startIndex: 1, type: "" },
|
|
|
+ { startIndex: 2, type: "operator.hcl" },
|
|
|
+ { startIndex: 3, type: "" },
|
|
|
+ { startIndex: 4, type: "number.float.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ {
|
|
|
+ line: "b = 1e+10",
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "variable.hcl" },
|
|
|
+ { startIndex: 1, type: "" },
|
|
|
+ { startIndex: 2, type: "operator.hcl" },
|
|
|
+ { startIndex: 3, type: "" },
|
|
|
+ { startIndex: 4, type: "number.float.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ {
|
|
|
+ line: "c = 1e10",
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "variable.hcl" },
|
|
|
+ { startIndex: 1, type: "" },
|
|
|
+ { startIndex: 2, type: "operator.hcl" },
|
|
|
+ { startIndex: 3, type: "" },
|
|
|
+ { startIndex: 4, type: "number.float.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ {
|
|
|
+ line: "d = 1.2e-10",
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "variable.hcl" },
|
|
|
+ { startIndex: 1, type: "" },
|
|
|
+ { startIndex: 2, type: "operator.hcl" },
|
|
|
+ { startIndex: 3, type: "" },
|
|
|
+ { startIndex: 4, type: "number.float.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ {
|
|
|
+ line: "e = 1.2e+10",
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "variable.hcl" },
|
|
|
+ { startIndex: 1, type: "" },
|
|
|
+ { startIndex: 2, type: "operator.hcl" },
|
|
|
+ { startIndex: 3, type: "" },
|
|
|
+ { startIndex: 4, type: "number.float.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ {
|
|
|
+ line: "f = 1.2e10",
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "variable.hcl" },
|
|
|
+ { startIndex: 1, type: "" },
|
|
|
+ { startIndex: 2, type: "operator.hcl" },
|
|
|
+ { startIndex: 3, type: "" },
|
|
|
+ { startIndex: 4, type: "number.float.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ {
|
|
|
+ line: 'map.key1 = "Value"',
|
|
|
+ tokens: [
|
|
|
+ { startIndex: 0, type: "variable.hcl" },
|
|
|
+ { startIndex: 3, type: "delimiter.hcl" },
|
|
|
+ { startIndex: 4, type: "variable.hcl" },
|
|
|
+ { startIndex: 8, type: "" },
|
|
|
+ { startIndex: 9, type: "operator.hcl" },
|
|
|
+ { startIndex: 10, type: "" },
|
|
|
+ { startIndex: 11, type: "string.hcl" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+]);
|