package lexers import ( . "github.com/alecthomas/chroma" // nolint ) // Typoscript lexer. var Typoscript = Register(MustNewLexer( &Config{ Name: "TypoScript", Aliases: []string{"typoscript"}, Filenames: []string{"*.ts", "*.txt"}, MimeTypes: []string{"text/x-typoscript"}, DotAll: true, }, Rules{ "root": { Include("comment"), Include("constant"), Include("html"), Include("label"), Include("whitespace"), Include("keywords"), Include("punctuation"), Include("operator"), Include("structure"), Include("literal"), Include("other"), }, "keywords": { {`(\[)(?i)(browser|compatVersion|dayofmonth|dayofweek|dayofyear|device|ELSE|END|GLOBAL|globalString|globalVar|hostname|hour|IP|language|loginUser|loginuser|minute|month|page|PIDinRootline|PIDupinRootline|system|treeLevel|useragent|userFunc|usergroup|version)([^\]]*)(\])`, ByGroups(LiteralStringSymbol, NameConstant, Text, LiteralStringSymbol), nil}, {`(?=[\w\-])(HTMLparser|HTMLparser_tags|addParams|cache|encapsLines|filelink|if|imageLinkWrap|imgResource|makelinks|numRows|numberFormat|parseFunc|replacement|round|select|split|stdWrap|strPad|tableStyle|tags|textStyle|typolink)(?![\w\-])`, NameFunction, nil}, {`(?:(=?\s*]*>`, Using(TypoScriptHTMLData, nil), nil}, {`&[^;\n]*;`, LiteralString, nil}, {`(_CSS_DEFAULT_STYLE)(\s*)(\()(?s)(.*(?=\n\)))`, ByGroups(NameClass, Text, LiteralStringSymbol, Using(TypoScriptCSSData, nil)), nil}, }, "literal": { {`0x[0-9A-Fa-f]+t?`, LiteralNumberHex, nil}, {`[0-9]+`, LiteralNumberInteger, nil}, {`(###\w+###)`, NameConstant, nil}, }, "label": { {`(EXT|FILE|LLL):[^}\n"]*`, LiteralString, nil}, {`(?![^\w\-])([\w\-]+(?:/[\w\-]+)+/?)(\S*\n)`, ByGroups(LiteralString, LiteralString), nil}, }, "punctuation": { {`[,.]`, Punctuation, nil}, }, "operator": { {`[<>,:=.*%+|]`, Operator, nil}, }, "structure": { {`[{}()\[\]\\]`, LiteralStringSymbol, nil}, }, "constant": { {`(\{)(\$)((?:[\w\-]+\.)*)([\w\-]+)(\})`, ByGroups(LiteralStringSymbol, Operator, NameConstant, NameConstant, LiteralStringSymbol), nil}, {`(\{)([\w\-]+)(\s*:\s*)([\w\-]+)(\})`, ByGroups(LiteralStringSymbol, NameConstant, Operator, NameConstant, LiteralStringSymbol), nil}, {`(#[a-fA-F0-9]{6}\b|#[a-fA-F0-9]{3}\b)`, LiteralStringChar, nil}, }, "comment": { {`(?,:=.*%+|]`, LiteralString, nil}, {`[\w"\-!/&;(){}]+`, LiteralString, nil}, }, }, )) // TypoScriptHTMLData lexer. var TypoScriptHTMLData = Register(MustNewLexer( &Config{ Name: "TypoScriptHtmlData", Aliases: []string{"typoscripthtmldata"}, Filenames: []string{}, MimeTypes: []string{}, }, Rules{ "root": { {`(INCLUDE_TYPOSCRIPT)`, NameClass, nil}, {`(EXT|FILE|LLL):[^}\n"]*`, LiteralString, nil}, {`(.*)(###\w+###)(.*)`, ByGroups(LiteralString, NameConstant, LiteralString), nil}, {`(\{)(\$)((?:[\w\-]+\.)*)([\w\-]+)(\})`, ByGroups(LiteralStringSymbol, Operator, NameConstant, NameConstant, LiteralStringSymbol), nil}, {`(.*)(\{)([\w\-]+)(\s*:\s*)([\w\-]+)(\})(.*)`, ByGroups(LiteralString, LiteralStringSymbol, NameConstant, Operator, NameConstant, LiteralStringSymbol, LiteralString), nil}, {`\s+`, Text, nil}, {`[<>,:=.*%+|]`, LiteralString, nil}, {`[\w"\-!/&;(){}#]+`, LiteralString, nil}, }, }, ))