diff options
Diffstat (limited to 'vendor/github.com/alecthomas/chroma/v2/lexers/mako.go')
| -rw-r--r-- | vendor/github.com/alecthomas/chroma/v2/lexers/mako.go | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/vendor/github.com/alecthomas/chroma/v2/lexers/mako.go b/vendor/github.com/alecthomas/chroma/v2/lexers/mako.go new file mode 100644 index 0000000..0de18fe --- /dev/null +++ b/vendor/github.com/alecthomas/chroma/v2/lexers/mako.go @@ -0,0 +1,62 @@ +package lexers + +import ( + . "github.com/alecthomas/chroma/v2" // nolint +) + +// Mako lexer. +var Mako = Register(MustNewLexer( + &Config{ + Name: "Mako", + Aliases: []string{"mako"}, + Filenames: []string{"*.mao"}, + MimeTypes: []string{"application/x-mako"}, + }, + makoRules, +)) + +func makoRules() Rules { + return Rules{ + "root": { + {`(\s*)(%)(\s*end(?:\w+))(\n|\Z)`, ByGroups(Text, CommentPreproc, Keyword, Other), nil}, + {`(\s*)(%)([^\n]*)(\n|\Z)`, ByGroups(Text, CommentPreproc, Using("Python"), Other), nil}, + {`(\s*)(##[^\n]*)(\n|\Z)`, ByGroups(Text, CommentPreproc, Other), nil}, + {`(?s)<%doc>.*?</%doc>`, CommentPreproc, nil}, + {`(<%)([\w.:]+)`, ByGroups(CommentPreproc, NameBuiltin), Push("tag")}, + {`(</%)([\w.:]+)(>)`, ByGroups(CommentPreproc, NameBuiltin, CommentPreproc), nil}, + {`<%(?=([\w.:]+))`, CommentPreproc, Push("ondeftags")}, + {`(<%(?:!?))(.*?)(%>)(?s)`, ByGroups(CommentPreproc, Using("Python"), CommentPreproc), nil}, + {`(\$\{)(.*?)(\})`, ByGroups(CommentPreproc, Using("Python"), CommentPreproc), nil}, + {`(?sx) + (.+?) # anything, followed by: + (?: + (?<=\n)(?=%|\#\#) | # an eval or comment line + (?=\#\*) | # multiline comment + (?=</?%) | # a python block + # call start or end + (?=\$\{) | # a substitution + (?<=\n)(?=\s*%) | + # - don't consume + (\\\n) | # an escaped newline + \Z # end of string + ) + `, ByGroups(Other, Operator), nil}, + {`\s+`, Text, nil}, + }, + "ondeftags": { + {`<%`, CommentPreproc, nil}, + {`(?<=<%)(include|inherit|namespace|page)`, NameBuiltin, nil}, + Include("tag"), + }, + "tag": { + {`((?:\w+)\s*=)(\s*)(".*?")`, ByGroups(NameAttribute, Text, LiteralString), nil}, + {`/?\s*>`, CommentPreproc, Pop(1)}, + {`\s+`, Text, nil}, + }, + "attr": { + {`".*?"`, LiteralString, Pop(1)}, + {`'.*?'`, LiteralString, Pop(1)}, + {`[^\s>]+`, LiteralString, Pop(1)}, + }, + } +} |
