1 <?xml version="1.0"?>
\r
2 <!DOCTYPE MODE SYSTEM "xmode.dtd">
\r
5 Made by Krassimir Berov: k.berov@gmail.com
\r
8 <PROPERTY NAME="commentStart" VALUE="<!--" />
\r
9 <PROPERTY NAME="commentEnd" VALUE="-->" />
\r
10 <PROPERTY NAME="lineComment" VALUE="#" />
\r
11 <PROPERTY NAME="wordBreakChars" VALUE=",+-=<>/?^&*" />
\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
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
32 <SPAN TYPE="LITERAL1">
\r
36 <SEQ TYPE="OPERATOR">=</SEQ><!-- give priority to TT -->
\r
40 <RULES SET="JAVASCRIPT" DEFAULT="MARKUP" IGNORE_CASE="TRUE">
\r
41 <SEQ TYPE="MARKUP" DELEGATE="javascript::MAIN">></SEQ>
\r
42 <!-- handle <SCRIPT SRC="..."> properly -->
\r
43 <SEQ TYPE="MARKUP" DELEGATE="html::MAIN">SRC=</SEQ>
\r
46 <RULES SET="CSS" DEFAULT="MARKUP">
\r
47 <SEQ TYPE="MARKUP" DELEGATE="css::MAIN">></SEQ>
\r
49 <RULES IGNORE_CASE="TRUE">
\r
50 <!-- SGML comment -->
\r
51 <SPAN TYPE="COMMENT1">
\r
52 <BEGIN><!--</BEGIN>
\r
57 <SPAN TYPE="MARKUP" DELEGATE="JAVASCRIPT">
\r
58 <BEGIN><SCRIPT</BEGIN>
\r
59 <END></SCRIPT></END>
\r
63 <SPAN TYPE="MARKUP" DELEGATE="CSS">
\r
64 <BEGIN><STYLE</BEGIN>
\r
65 <END></STYLE></END>
\r
68 <!-- DTD instructions -->
\r
69 <SPAN TYPE="KEYWORD2" DELEGATE="xml::DTD-TAGS">
\r
70 <BEGIN><!</BEGIN>
\r
74 <!-- markup tags -->
\r
75 <SPAN TYPE="MARKUP" DELEGATE="TAGS">
\r
80 <!-- SGML entities -->
\r
81 <SPAN TYPE="LITERAL2" NO_WORD_BREAK="TRUE">
\r
82 <BEGIN>&</BEGIN>
\r
85 <SPAN TYPE="COMMENT2">
\r
89 <SPAN_REGEXP DELEGATE="perl::MAIN" HASH_CHAR="[%">
\r
90 <BEGIN>\[%\s*?PERL\s*?%\]</BEGIN>
\r
91 <END>\[%\s*?END\s*?%\]</END>
\r
94 <SPAN TYPE="LITERAL3" DELEGATE="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
104 <SPAN TYPE="KEYWORD2" NO_LINE_BREAK="TRUE">
\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
120 <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE">
\r
125 <SEQ TYPE="OPERATOR">=</SEQ>
\r
126 <SEQ TYPE="OPERATOR">!</SEQ>
\r
127 <SEQ TYPE="OPERATOR">>=</SEQ>
\r
128 <SEQ TYPE="OPERATOR"><=</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">></SEQ>
\r
134 <SEQ TYPE="OPERATOR"><</SEQ>
\r
135 <SEQ TYPE="OPERATOR">%</SEQ>
\r
136 <SEQ TYPE="OPERATOR">&</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
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
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
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
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
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