mason.xml

 1<lexer>
 2  <config>
 3    <name>Mason</name>
 4    <alias>mason</alias>
 5    <filename>*.m</filename>
 6    <filename>*.mhtml</filename>
 7    <filename>*.mc</filename>
 8    <filename>*.mi</filename>
 9    <filename>autohandler</filename>
10    <filename>dhandler</filename>
11    <mime_type>application/x-mason</mime_type>
12    <priority>0.1</priority>
13  </config>
14  <rules>
15    <state name="root">
16      <rule pattern="\s+">
17        <token type="Text"/>
18      </rule>
19      <rule pattern="(&lt;%doc&gt;)(.*?)(&lt;/%doc&gt;)(?s)">
20        <bygroups>
21          <token type="NameTag"/>
22          <token type="CommentMultiline"/>
23          <token type="NameTag"/>
24        </bygroups>
25      </rule>
26      <rule pattern="(&lt;%(?:def|method))(\s*)(.*?)(&gt;)(.*?)(&lt;/%\2\s*&gt;)(?s)">
27        <bygroups>
28          <token type="NameTag"/>
29          <token type="Text"/>
30          <token type="NameFunction"/>
31          <token type="NameTag"/>
32          <usingself state="root"/>
33          <token type="NameTag"/>
34        </bygroups>
35      </rule>
36      <rule pattern="(&lt;%\w+)(.*?)(&gt;)(.*?)(&lt;/%\2\s*&gt;)(?s)">
37        <bygroups>
38          <token type="NameTag"/>
39          <token type="NameFunction"/>
40          <token type="NameTag"/>
41          <using lexer="Perl"/>
42          <token type="NameTag"/>
43        </bygroups>
44      </rule>
45      <rule pattern="(&lt;&amp;[^|])(.*?)(,.*?)?(&amp;&gt;)(?s)">
46        <bygroups>
47          <token type="NameTag"/>
48          <token type="NameFunction"/>
49          <using lexer="Perl"/>
50          <token type="NameTag"/>
51        </bygroups>
52      </rule>
53      <rule pattern="(&lt;&amp;\|)(.*?)(,.*?)?(&amp;&gt;)(?s)">
54        <bygroups>
55          <token type="NameTag"/>
56          <token type="NameFunction"/>
57          <using lexer="Perl"/>
58          <token type="NameTag"/>
59        </bygroups>
60      </rule>
61      <rule pattern="&lt;/&amp;&gt;">
62        <token type="NameTag"/>
63      </rule>
64      <rule pattern="(&lt;%!?)(.*?)(%&gt;)(?s)">
65        <bygroups>
66          <token type="NameTag"/>
67          <using lexer="Perl"/>
68          <token type="NameTag"/>
69        </bygroups>
70      </rule>
71      <rule pattern="(?&lt;=^)#[^\n]*(\n|\Z)">
72        <token type="Comment"/>
73      </rule>
74      <rule pattern="(?&lt;=^)(%)([^\n]*)(\n|\Z)">
75        <bygroups>
76          <token type="NameTag"/>
77          <using lexer="Perl"/>
78          <token type="Other"/>
79        </bygroups>
80      </rule>
81      <rule pattern="(?sx)&#xA;                 (.+?)               # anything, followed by:&#xA;                 (?:&#xA;                  (?&lt;=\n)(?=[%#]) |  # an eval or comment line&#xA;                  (?=&lt;/?[%&amp;]) |      # a substitution or block or&#xA;                                     # call start or end&#xA;                                     # - don&#39;t consume&#xA;                  (\\\n) |           # an escaped newline&#xA;                  \Z                 # end of string&#xA;                 )">
82        <bygroups>
83          <using lexer="HTML"/>
84          <token type="Operator"/>
85        </bygroups>
86      </rule>
87    </state>
88  </rules>
89</lexer>