1package m
2
3import (
4 . "github.com/alecthomas/chroma" // nolint
5 "github.com/alecthomas/chroma/lexers/internal"
6 . "github.com/alecthomas/chroma/lexers/p" // nolint
7)
8
9// Myghty lexer.
10var Myghty = internal.Register(MustNewLexer(
11 &Config{
12 Name: "Myghty",
13 Aliases: []string{"myghty"},
14 Filenames: []string{"*.myt", "autodelegate"},
15 MimeTypes: []string{"application/x-myghty"},
16 },
17 Rules{
18 "root": {
19 {`\s+`, Text, nil},
20 {`(<%(?:def|method))(\s*)(.*?)(>)(.*?)(</%\2\s*>)(?s)`, ByGroups(NameTag, Text, NameFunction, NameTag, UsingSelf("root"), NameTag), nil},
21 {`(<%\w+)(.*?)(>)(.*?)(</%\2\s*>)(?s)`, ByGroups(NameTag, NameFunction, NameTag, Using(Python), NameTag), nil},
22 {`(<&[^|])(.*?)(,.*?)?(&>)`, ByGroups(NameTag, NameFunction, Using(Python), NameTag), nil},
23 {`(<&\|)(.*?)(,.*?)?(&>)(?s)`, ByGroups(NameTag, NameFunction, Using(Python), NameTag), nil},
24 {`</&>`, NameTag, nil},
25 {`(<%!?)(.*?)(%>)(?s)`, ByGroups(NameTag, Using(Python), NameTag), nil},
26 {`(?<=^)#[^\n]*(\n|\Z)`, Comment, nil},
27 {`(?<=^)(%)([^\n]*)(\n|\Z)`, ByGroups(NameTag, Using(Python), Other), nil},
28 {`(?sx)
29 (.+?) # anything, followed by:
30 (?:
31 (?<=\n)(?=[%#]) | # an eval or comment line
32 (?=</?[%&]) | # a substitution or block or
33 # call start or end
34 # - don't consume
35 (\\\n) | # an escaped newline
36 \Z # end of string
37 )`, ByGroups(Other, Operator), nil},
38 },
39 },
40))