summaryrefslogtreecommitdiff
path: root/vendor/github.com/alecthomas/chroma/v2/lexers/mason.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/alecthomas/chroma/v2/lexers/mason.go')
-rw-r--r--vendor/github.com/alecthomas/chroma/v2/lexers/mason.go44
1 files changed, 44 insertions, 0 deletions
diff --git a/vendor/github.com/alecthomas/chroma/v2/lexers/mason.go b/vendor/github.com/alecthomas/chroma/v2/lexers/mason.go
new file mode 100644
index 0000000..57e6120
--- /dev/null
+++ b/vendor/github.com/alecthomas/chroma/v2/lexers/mason.go
@@ -0,0 +1,44 @@
+package lexers
+
+import (
+ . "github.com/alecthomas/chroma/v2" // nolint
+)
+
+// Mason lexer.
+var Mason = Register(MustNewLexer(
+ &Config{
+ Name: "Mason",
+ Aliases: []string{"mason"},
+ Filenames: []string{"*.m", "*.mhtml", "*.mc", "*.mi", "autohandler", "dhandler"},
+ MimeTypes: []string{"application/x-mason"},
+ Priority: 0.1,
+ },
+ masonRules,
+))
+
+func masonRules() Rules {
+ return Rules{
+ "root": {
+ {`\s+`, Text, nil},
+ {`(<%doc>)(.*?)(</%doc>)(?s)`, ByGroups(NameTag, CommentMultiline, NameTag), nil},
+ {`(<%(?:def|method))(\s*)(.*?)(>)(.*?)(</%\2\s*>)(?s)`, ByGroups(NameTag, Text, NameFunction, NameTag, UsingSelf("root"), NameTag), nil},
+ {`(<%\w+)(.*?)(>)(.*?)(</%\2\s*>)(?s)`, ByGroups(NameTag, NameFunction, NameTag, Using("Perl"), NameTag), nil},
+ {`(<&[^|])(.*?)(,.*?)?(&>)(?s)`, ByGroups(NameTag, NameFunction, Using("Perl"), NameTag), nil},
+ {`(<&\|)(.*?)(,.*?)?(&>)(?s)`, ByGroups(NameTag, NameFunction, Using("Perl"), NameTag), nil},
+ {`</&>`, NameTag, nil},
+ {`(<%!?)(.*?)(%>)(?s)`, ByGroups(NameTag, Using("Perl"), NameTag), nil},
+ {`(?<=^)#[^\n]*(\n|\Z)`, Comment, nil},
+ {`(?<=^)(%)([^\n]*)(\n|\Z)`, ByGroups(NameTag, Using("Perl"), Other), nil},
+ {`(?sx)
+ (.+?) # anything, followed by:
+ (?:
+ (?<=\n)(?=[%#]) | # an eval or comment line
+ (?=</?[%&]) | # a substitution or block or
+ # call start or end
+ # - don't consume
+ (\\\n) | # an escaped newline
+ \Z # end of string
+ )`, ByGroups(Using("HTML"), Operator), nil},
+ },
+ }
+}