]> gitweb.factorcode.org Git - factor.git/blob - basis/xmode/modes/tthtml.xml
37bfa2fb1756af9185af842d1dfdd0a4ff0c7cc3
[factor.git] / basis / xmode / modes / tthtml.xml
1 <?xml version="1.0"?>\r
2 <!DOCTYPE MODE SYSTEM "xmode.dtd">\r
3 <MODE>\r
4         <!--\r
5                 Made by Krassimir Berov: k.berov@gmail.com \r
6         -->\r
7         <PROPS>\r
8                 <PROPERTY NAME="commentStart" VALUE="&lt;!--" />\r
9                 <PROPERTY NAME="commentEnd" VALUE="--&gt;" />\r
10                 <PROPERTY NAME="lineComment" VALUE="#" />\r
11                 <PROPERTY NAME="wordBreakChars" VALUE=",+-=&lt;&gt;/?^&amp;*" />\r
12 \r
13                 <!-- Auto indent -->\r
14                 <PROPERTY NAME="indentOpenBrackets" VALUE="{" />\r
15                 <PROPERTY NAME="indentCloseBrackets" VALUE="}" />\r
16                 <PROPERTY NAME="indentOpenBrackets" VALUE="[" />\r
17                 <PROPERTY NAME="indentCloseBrackets" VALUE="]" />\r
18                 <PROPERTY NAME="unalignedOpenBrackets" VALUE="(" />\r
19                 <PROPERTY NAME="unalignedCloseBrackets" VALUE=")" />\r
20                 <PROPERTY NAME="lineUpClosingBracket" VALUE="true" />\r
21                 <PROPERTY NAME="indentNextLine" VALUE="(FOREACH|FOR|WHILE|IF|ELSIF|ELSE|UNLESS|SWITCH|CASE|TRY|CATCH)(\s.*?)?;" />\r
22         </PROPS>\r
23 \r
24         <!-- ESCAPE is not exactly right but it is needed to correctly\r
25              handle JavaScript in on* parameters -->\r
26         <RULES SET="TAGS" DEFAULT="MARKUP" ESCAPE="\">\r
27                 <SPAN TYPE="LITERAL1">\r
28                         <BEGIN>"</BEGIN>\r
29                         <END>"</END>\r
30                 </SPAN>\r
31 \r
32                 <SPAN TYPE="LITERAL1">\r
33                         <BEGIN>'</BEGIN>\r
34                         <END>'</END>\r
35                 </SPAN>\r
36                 <SEQ TYPE="OPERATOR">=</SEQ><!-- give priority to TT -->\r
37 \r
38         </RULES>\r
39 \r
40         <RULES SET="JAVASCRIPT" DEFAULT="MARKUP" IGNORE_CASE="TRUE">\r
41                 <SEQ TYPE="MARKUP" DELEGATE="javascript::MAIN">&gt;</SEQ>\r
42                 <!-- handle <SCRIPT SRC="..."> properly -->\r
43                 <SEQ TYPE="MARKUP" DELEGATE="html::MAIN">SRC=</SEQ>\r
44         </RULES>\r
45 \r
46         <RULES SET="CSS" DEFAULT="MARKUP">\r
47                 <SEQ TYPE="MARKUP" DELEGATE="css::MAIN">&gt;</SEQ>\r
48         </RULES>\r
49         <RULES IGNORE_CASE="TRUE">\r
50                 <!-- SGML comment -->\r
51                 <SPAN TYPE="COMMENT1">\r
52                         <BEGIN>&lt;!--</BEGIN>\r
53                         <END>--&gt;</END>\r
54                 </SPAN>\r
55 \r
56                 <!-- JavaScript -->\r
57                 <SPAN TYPE="MARKUP" DELEGATE="JAVASCRIPT">\r
58                         <BEGIN>&lt;SCRIPT</BEGIN>\r
59                         <END>&lt;/SCRIPT&gt;</END>\r
60                 </SPAN>\r
61 \r
62                 <!-- stylesheet -->\r
63                 <SPAN TYPE="MARKUP" DELEGATE="CSS">\r
64                         <BEGIN>&lt;STYLE</BEGIN>\r
65                         <END>&lt;/STYLE&gt;</END>\r
66                 </SPAN>\r
67 \r
68                 <!-- DTD instructions -->\r
69                 <SPAN TYPE="KEYWORD2" DELEGATE="xml::DTD-TAGS">\r
70                         <BEGIN>&lt;!</BEGIN>\r
71                         <END>&gt;</END>\r
72                 </SPAN>\r
73 \r
74                 <!-- markup tags -->\r
75                 <SPAN TYPE="MARKUP" DELEGATE="TAGS">\r
76                         <BEGIN>&lt;</BEGIN>\r
77                         <END>&gt;</END>\r
78                 </SPAN>\r
79 \r
80                 <!-- SGML entities -->\r
81                 <SPAN TYPE="LITERAL2" NO_WORD_BREAK="TRUE">\r
82                         <BEGIN>&amp;</BEGIN>\r
83                         <END>;</END>\r
84                 </SPAN>\r
85                 <SPAN TYPE="COMMENT2">\r
86                         <BEGIN>[%#</BEGIN>\r
87                         <END>%]</END>\r
88                 </SPAN>\r
89                 <SPAN_REGEXP DELEGATE="perl::MAIN" HASH_CHAR="[%">\r
90                         <BEGIN>\[%\s*?PERL\s*?%\]</BEGIN>\r
91                         <END>\[%\s*?END\s*?%\]</END>\r
92                 </SPAN_REGEXP>\r
93 \r
94                 <SPAN TYPE="LITERAL3" DELEGATE="TT">\r
95                         <BEGIN>[%</BEGIN>\r
96                         <END>%]</END>\r
97                 </SPAN>\r
98         </RULES>\r
99         <RULES SET="TT"\r
100                         IGNORE_CASE="FALSE"\r
101                         HIGHLIGHT_DIGITS="TRUE"\r
102                         DIGIT_RE="(0x[\p{XDigit}]+[lL]?|[\p{Digit}]+(e[\p{Digit}]*)?[lLdDfF]?)">\r
103 \r
104                 <SPAN TYPE="KEYWORD2" NO_LINE_BREAK="TRUE">\r
105                         <BEGIN>${</BEGIN>\r
106                         <END>}</END>\r
107                 </SPAN>\r
108                 <!-- Scalar variables -->\r
109                 <SEQ_REGEXP HASH_CHAR="$" TYPE="KEYWORD2">\$#?[\w:]+</SEQ_REGEXP>\r
110                 <!-- Scalar variables\r
111                 <SEQ_REGEXP ->ADD HASH_CHARS here if uncommenting<- TYPE="KEYWORD2">\s[a-z_0-9]+\s</SEQ_REGEXP> -->\r
112                 <!-- Compound Variables -->\r
113                 <MARK_PREVIOUS TYPE="KEYWORD4" MATCH_TYPE="CONTEXT">.</MARK_PREVIOUS>\r
114                 <MARK_PREVIOUS TYPE="FUNCTION" MATCH_TYPE="CONTEXT">(</MARK_PREVIOUS>\r
115                 <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE">\r
116                         <BEGIN>"</BEGIN>\r
117                         <END>"</END>\r
118                 </SPAN>\r
119 \r
120                 <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE">\r
121                         <BEGIN>'</BEGIN>\r
122                         <END>'</END>\r
123                 </SPAN>\r
124 \r
125                 <SEQ TYPE="OPERATOR">=</SEQ>\r
126                 <SEQ TYPE="OPERATOR">!</SEQ>\r
127                 <SEQ TYPE="OPERATOR">&gt;=</SEQ>\r
128                 <SEQ TYPE="OPERATOR">&lt;=</SEQ>\r
129                 <SEQ TYPE="OPERATOR">+</SEQ>\r
130                 <SEQ TYPE="OPERATOR">-</SEQ>\r
131                 <SEQ TYPE="OPERATOR">/</SEQ>\r
132                 <SEQ TYPE="OPERATOR">*</SEQ>\r
133                 <SEQ TYPE="OPERATOR">&gt;</SEQ>\r
134                 <SEQ TYPE="OPERATOR">&lt;</SEQ>\r
135                 <SEQ TYPE="OPERATOR">%</SEQ>\r
136                 <SEQ TYPE="OPERATOR">&amp;</SEQ>\r
137                 <SEQ TYPE="OPERATOR">|</SEQ>\r
138                 <SEQ TYPE="OPERATOR">^</SEQ>\r
139                 <SEQ TYPE="OPERATOR">~</SEQ>\r
140                 <SEQ TYPE="OPERATOR">.</SEQ>\r
141                 <SEQ TYPE="OPERATOR">}</SEQ>\r
142                 <SEQ TYPE="OPERATOR">{</SEQ>\r
143                 <SEQ TYPE="OPERATOR">,</SEQ>\r
144                 <SEQ TYPE="OPERATOR">;</SEQ>\r
145                 <SEQ TYPE="OPERATOR">]</SEQ>\r
146                 <SEQ TYPE="OPERATOR">[</SEQ>\r
147                 <SEQ TYPE="OPERATOR">?</SEQ>\r
148                 <KEYWORDS>\r
149                         <!-- Template directives -->\r
150                         <KEYWORD1>SET</KEYWORD1>\r
151                         <KEYWORD1>GET</KEYWORD1>\r
152                         <KEYWORD1>CALL</KEYWORD1>\r
153                         <KEYWORD1>DEFAULT</KEYWORD1>\r
154                         <KEYWORD1>IF</KEYWORD1>\r
155                         <KEYWORD1>ELSIF</KEYWORD1>\r
156                         <KEYWORD1>ELSE</KEYWORD1>\r
157                         <KEYWORD1>UNLESS</KEYWORD1>\r
158                         <KEYWORD1>LAST</KEYWORD1>\r
159                         <KEYWORD1>NEXT</KEYWORD1>\r
160                         <KEYWORD1>FOR</KEYWORD1>\r
161                         <KEYWORD1>FOREACH</KEYWORD1>\r
162                         <KEYWORD1>WHILE</KEYWORD1>\r
163                         <KEYWORD1>SWITCH</KEYWORD1>\r
164                         <KEYWORD1>CASE</KEYWORD1>\r
165                         <KEYWORD1>PROCESS</KEYWORD1>\r
166                         <KEYWORD1>INCLUDE</KEYWORD1>\r
167                         <KEYWORD1>INSERT</KEYWORD1>\r
168                         <KEYWORD1>WRAPPER</KEYWORD1>\r
169                         <KEYWORD1>BLOCK</KEYWORD1>\r
170                         <KEYWORD1>MACRO</KEYWORD1>\r
171                         <KEYWORD1>END</KEYWORD1>\r
172                         <KEYWORD1>USE</KEYWORD1>\r
173                         <KEYWORD1>IN</KEYWORD1>\r
174                         <KEYWORD1>FILTER</KEYWORD1>\r
175                         <KEYWORD1>TRY</KEYWORD1>\r
176                         <KEYWORD1>THROW</KEYWORD1>\r
177                         <KEYWORD1>CATCH</KEYWORD1>\r
178                         <KEYWORD1>FINAL</KEYWORD1>\r
179                         <KEYWORD1>META</KEYWORD1>\r
180                         <KEYWORD1>TAGS</KEYWORD1>\r
181                         <KEYWORD1>DEBUG</KEYWORD1>\r
182                         <KEYWORD1>PERL</KEYWORD1>\r
183                         <!-- Compile Time Constant Folding -->\r
184                         <KEYWORD1>constants</KEYWORD1>\r
185                         <!-- Special Variables -->\r
186                         <KEYWORD2>template</KEYWORD2>\r
187                         <KEYWORD2>component</KEYWORD2>\r
188                         <KEYWORD2>loop</KEYWORD2>\r
189                         <KEYWORD2>error</KEYWORD2>\r
190                         <KEYWORD2>content</KEYWORD2>\r
191 \r
192                         <!-- VMethods -->\r
193                         <!-- Scalar Virtual Methods -->\r
194                         <KEYWORD3>defined</KEYWORD3>\r
195                         <KEYWORD3>length</KEYWORD3>\r
196                         <KEYWORD3>repeat</KEYWORD3>\r
197                         <KEYWORD3>replace</KEYWORD3>\r
198                         <KEYWORD3>match</KEYWORD3>\r
199                         <KEYWORD3>search</KEYWORD3>\r
200                         <KEYWORD3>split</KEYWORD3>\r
201                         <KEYWORD3>chunk</KEYWORD3>\r
202                         <KEYWORD3>list</KEYWORD3>\r
203                         <KEYWORD3>hash</KEYWORD3>\r
204                         <KEYWORD3>size</KEYWORD3>\r
205 \r
206                         <!-- Hash Virtual Methods -->\r
207                         <KEYWORD3>keys</KEYWORD3>\r
208                         <KEYWORD3>values</KEYWORD3>\r
209                         <KEYWORD3>each</KEYWORD3>\r
210                         <KEYWORD3>sort</KEYWORD3>\r
211                         <KEYWORD3>nsort</KEYWORD3>\r
212                         <KEYWORD3>import</KEYWORD3>\r
213                         <KEYWORD3>defined</KEYWORD3>\r
214                         <KEYWORD3>exists</KEYWORD3>\r
215                         <KEYWORD3>item</KEYWORD3>\r
216 \r
217                         <!-- List Virtual Methods -->\r
218                         <KEYWORD3>first</KEYWORD3>\r
219                         <KEYWORD3>last</KEYWORD3>\r
220                         <KEYWORD3>max</KEYWORD3>\r
221                         <KEYWORD3>reverse</KEYWORD3>\r
222                         <KEYWORD3>join</KEYWORD3>\r
223                         <KEYWORD3>grep</KEYWORD3>\r
224                         <KEYWORD3>unshift</KEYWORD3>\r
225                         <KEYWORD3>push</KEYWORD3>\r
226                         <KEYWORD3>shift</KEYWORD3>\r
227                         <KEYWORD3>pop</KEYWORD3>\r
228                         <KEYWORD3>unique</KEYWORD3>\r
229                         <KEYWORD3>merge</KEYWORD3>\r
230                         <KEYWORD3>slice</KEYWORD3>\r
231                         <KEYWORD3>splice</KEYWORD3>\r
232                         <KEYWORD3>count</KEYWORD3>\r
233 \r
234                         <!-- Standard filters -->\r
235                         <FUNCTION>format</FUNCTION>\r
236                         <FUNCTION>upper</FUNCTION>\r
237                         <FUNCTION>lower</FUNCTION>\r
238                         <FUNCTION>ucfirst</FUNCTION>\r
239                         <FUNCTION>lcfirst</FUNCTION>\r
240                         <FUNCTION>trim</FUNCTION>\r
241                         <FUNCTION>collapse</FUNCTION>\r
242                         <FUNCTION>html</FUNCTION>\r
243                         <FUNCTION>html_entity</FUNCTION>\r
244                         <FUNCTION>html_para</FUNCTION>\r
245                         <FUNCTION>html_break</FUNCTION>\r
246                         <FUNCTION>html_para_break</FUNCTION>\r
247                         <FUNCTION>html_line_break</FUNCTION>\r
248                         <FUNCTION>uri</FUNCTION>\r
249                         <FUNCTION>url</FUNCTION>\r
250                         <FUNCTION>indent</FUNCTION>\r
251                         <FUNCTION>truncate</FUNCTION>\r
252                         <FUNCTION>repeat</FUNCTION>\r
253                         <FUNCTION>remove</FUNCTION>\r
254                         <FUNCTION>replace</FUNCTION>\r
255                         <FUNCTION>redirect</FUNCTION>\r
256                         <FUNCTION>eval</FUNCTION>\r
257                         <FUNCTION>evaltt</FUNCTION>\r
258                         <FUNCTION>perl</FUNCTION>\r
259                         <FUNCTION>evalperl</FUNCTION>\r
260                         <FUNCTION>stdout</FUNCTION>\r
261                         <FUNCTION>stderr</FUNCTION>\r
262                         <FUNCTION>null</FUNCTION>\r
263                         <FUNCTION>latex</FUNCTION>\r
264                 </KEYWORDS>\r
265         </RULES>\r
266 </MODE>\r