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