coldfusion.go

 1package c
 2
 3import (
 4	. "github.com/alecthomas/chroma" // nolint
 5	"github.com/alecthomas/chroma/lexers/internal"
 6)
 7
 8// Cfstatement lexer.
 9var Cfstatement = internal.Register(MustNewLexer(
10	&Config{
11		Name:            "cfstatement",
12		Aliases:         []string{"cfs"},
13		Filenames:       []string{},
14		MimeTypes:       []string{},
15		NotMultiline:    true,
16		CaseInsensitive: true,
17	},
18	Rules{
19		"root": {
20			{`//.*?\n`, CommentSingle, nil},
21			{`/\*(?:.|\n)*?\*/`, CommentMultiline, nil},
22			{`\+\+|--`, Operator, nil},
23			{`[-+*/^&=!]`, Operator, nil},
24			{`<=|>=|<|>|==`, Operator, nil},
25			{`mod\b`, Operator, nil},
26			{`(eq|lt|gt|lte|gte|not|is|and|or)\b`, Operator, nil},
27			{`\|\||&&`, Operator, nil},
28			{`\?`, Operator, nil},
29			{`"`, LiteralStringDouble, Push("string")},
30			{`'.*?'`, LiteralStringSingle, nil},
31			{`\d+`, LiteralNumber, nil},
32			{`(if|else|len|var|xml|default|break|switch|component|property|function|do|try|catch|in|continue|for|return|while|required|any|array|binary|boolean|component|date|guid|numeric|query|string|struct|uuid|case)\b`, Keyword, nil},
33			{`(true|false|null)\b`, KeywordConstant, nil},
34			{`(application|session|client|cookie|super|this|variables|arguments)\b`, NameConstant, nil},
35			{`([a-z_$][\w.]*)(\s*)(\()`, ByGroups(NameFunction, Text, Punctuation), nil},
36			{`[a-z_$][\w.]*`, NameVariable, nil},
37			{`[()\[\]{};:,.\\]`, Punctuation, nil},
38			{`\s+`, Text, nil},
39		},
40		"string": {
41			{`""`, LiteralStringDouble, nil},
42			{`#.+?#`, LiteralStringInterpol, nil},
43			{`[^"#]+`, LiteralStringDouble, nil},
44			{`#`, LiteralStringDouble, nil},
45			{`"`, LiteralStringDouble, Pop(1)},
46		},
47	},
48))