summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/alecthomas/chroma/lexers/h/hcl.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/alecthomas/chroma/lexers/h/hcl.go')
-rw-r--r--vendor/github.com/alecthomas/chroma/lexers/h/hcl.go73
1 files changed, 73 insertions, 0 deletions
diff --git a/vendor/github.com/alecthomas/chroma/lexers/h/hcl.go b/vendor/github.com/alecthomas/chroma/lexers/h/hcl.go
new file mode 100644
index 000000000..7206fba08
--- /dev/null
+++ b/vendor/github.com/alecthomas/chroma/lexers/h/hcl.go
@@ -0,0 +1,73 @@
+package h
+
+import (
+ . "github.com/alecthomas/chroma" // nolint
+ "github.com/alecthomas/chroma/lexers/internal"
+)
+
+// HCL lexer.
+var HCL = internal.Register(MustNewLazyLexer(
+ &Config{
+ Name: "HCL",
+ Aliases: []string{"hcl"},
+ Filenames: []string{"*.hcl"},
+ MimeTypes: []string{"application/x-hcl"},
+ },
+ hclRules,
+))
+
+func hclRules() Rules {
+ return Rules{
+ "root": {
+ Include("string"),
+ Include("punctuation"),
+ Include("curly"),
+ Include("basic"),
+ Include("whitespace"),
+ {`[0-9]+`, LiteralNumber, nil},
+ },
+ "basic": {
+ {Words(`\b`, `\b`, `true`, `false`), KeywordType, nil},
+ {`\s*/\*`, CommentMultiline, Push("comment")},
+ {`\s*#.*\n`, CommentSingle, nil},
+ {`(.*?)(\s*)(=)`, ByGroups(Name, Text, Operator), nil},
+ {`\d+`, Number, nil},
+ {`\b\w+\b`, Keyword, nil},
+ {`\$\{`, LiteralStringInterpol, Push("var_builtin")},
+ },
+ "function": {
+ {`(\s+)(".*")(\s+)`, ByGroups(Text, LiteralString, Text), nil},
+ Include("punctuation"),
+ Include("curly"),
+ },
+ "var_builtin": {
+ {`\$\{`, LiteralStringInterpol, Push()},
+ {Words(`\b`, `\b`, `concat`, `file`, `join`, `lookup`, `element`), NameBuiltin, nil},
+ Include("string"),
+ Include("punctuation"),
+ {`\s+`, Text, nil},
+ {`\}`, LiteralStringInterpol, Pop(1)},
+ },
+ "string": {
+ {`(".*")`, ByGroups(LiteralStringDouble), nil},
+ },
+ "punctuation": {
+ {`[\[\](),.]`, Punctuation, nil},
+ },
+ "curly": {
+ {`\{`, TextPunctuation, nil},
+ {`\}`, TextPunctuation, nil},
+ },
+ "comment": {
+ {`[^*/]`, CommentMultiline, nil},
+ {`/\*`, CommentMultiline, Push()},
+ {`\*/`, CommentMultiline, Pop(1)},
+ {`[*/]`, CommentMultiline, nil},
+ },
+ "whitespace": {
+ {`\n`, Text, nil},
+ {`\s+`, Text, nil},
+ {`\\\n`, Text, nil},
+ },
+ }
+}