summaryrefslogtreecommitdiff
path: root/vendor/github.com/alecthomas/chroma/v2/lexers/mako.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/alecthomas/chroma/v2/lexers/mako.go')
-rw-r--r--vendor/github.com/alecthomas/chroma/v2/lexers/mako.go62
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)},
+ },
+ }
+}