]> gitweb.factorcode.org Git - factor.git/blob - basis/xmode/modes/ruby.xml
xmode.modes: updating with recent xmode files
[factor.git] / basis / xmode / modes / ruby.xml
1 <?xml version="1.0"?>
2 <!DOCTYPE MODE SYSTEM "xmode.dtd">
3 <!-- Ruby mode by Ian Maclean (Ruby edit mode v0.7.4) -->
4 <!-- tweakage by Chris Morris - clabs.org -->
5 <!-- further tweakage by Christophe Grandsire -->
6 <!-- further tweakage by Robert McKinnon 2004 -->
7 <!-- Major overhaul by Karl von Laudermann -->
8 <!-- More tweakage by Jim Morris (wolfmanjm), adds electric unindent for else, elsif, rescue, end -->
9 <!-- More tweakage by Jim Morris (wolfmanjm), fixed when statements for most cases -->
10 <!-- recommended mode catalog entry:
11     <MODE NAME="ruby" FILE="ruby.xml" FILE_NAME_GLOB="*.{rb,rbw}" FIRST_LINE_GLOB="#!*/*ruby*" /> -->
12 <MODE>
13         <PROPS>
14                 <PROPERTY NAME="indentOpenBrackets" VALUE="{"/>
15                 <PROPERTY NAME="indentCloseBrackets" VALUE="}"/>
16                 <PROPERTY NAME="unalignedOpenBrackets" VALUE="("/>
17                 <PROPERTY NAME="unalignedCloseBrackets" VALUE=")"/>
18                 <PROPERTY NAME="lineUpClosingBracket" VALUE="true"/>
19                 <PROPERTY NAME="commentStart" VALUE="=begin"/>
20                 <PROPERTY NAME="commentEnd" VALUE="=end"/>
21                 <PROPERTY NAME="lineComment" VALUE="#"/>
22                 <PROPERTY NAME="indentNextLines"
23                           VALUE="[^#]*\s+do(\s*|(\s+\|.+\|\s*))|\s*(if\s+.*|elsif.*|else.*|do(\s*|\s+.*)|case\s+.*|when\s+.*|while\s+.*|for\s+.*|until\s+.*|loop\s+.*|def\s+.*|class\s+.*|module\s+.*|begin.*|unless\s+.*|rescue.*|ensure.*)+"/>
24                 <PROPERTY NAME="unindentThisLine" VALUE="^\s*(else.*|end\s*|elsif.*|rescue.*|when.*|ensure.*)$"/>
25                 <PROPERTY NAME="unindentNextLines" VALUE="^\s*(end\s*|else.*|rescue.*|elsif.*|when.*|ensure.*)$"/>
26                 <PROPERTY NAME="indentNextLine"
27                           VALUE="^[^#]*([^$](:|\+|~|\*|-|%|&lt;|&gt;|&amp;|\^|\.|=)|\s(/|\!|\?|\|)|\b(not|and|or)|\\)\s*$"/>
28                 <PROPERTY NAME="electricKeys" VALUE="edfn"/>
29         </PROPS>
30         <RULES IGNORE_CASE="FALSE" HIGHLIGHT_DIGITS="TRUE"
31                DIGIT_RE="(0b[01]([01_]*[01])?)|(0x[\p{XDigit}]([\p{XDigit}_]*[\p{XDigit}])?)|(0([0-7_]*[0-7])?)|(0d[0-9]([0-9_]*[0-9])?)|([1-9]([0-9_]*[0-9])?)|([0-9]([0-9_]*[0-9])?[Ee]([0-9]([0-9_]*[0-9])?)?)">
32                 <!--       ^ Binary literal    | ^ Hex literal                               | ^ Octal literal  | ^ "0d" Style Dec lit   | ^ Normal Dec literal | ^ Float literal w/out dec point, with exp. -->
33
34                 <!-- Ruby comment (Inline Documentation ) -->
35                 <SPAN TYPE="COMMENT2">
36                         <BEGIN>=begin</BEGIN>
37                         <END AT_LINE_START="TRUE">=end</END>
38                 </SPAN>
39
40                 <!-- Class and instance vars -->
41                 <MARK_FOLLOWING TYPE="KEYWORD4">@</MARK_FOLLOWING>
42
43                 <!-- Method, class and modules names -->
44                 <MARK_FOLLOWING TYPE="FUNCTION" MATCH_TYPE="KEYWORD1">\bdef\b</MARK_FOLLOWING>
45                 <MARK_FOLLOWING TYPE="FUNCTION" MATCH_TYPE="KEYWORD1">\bundef\b</MARK_FOLLOWING>
46                 <MARK_FOLLOWING TYPE="FUNCTION" MATCH_TYPE="KEYWORD1">\bclass\b</MARK_FOLLOWING>
47                 <MARK_FOLLOWING TYPE="FUNCTION" MATCH_TYPE="KEYWORD1">\bmodule\b</MARK_FOLLOWING>
48
49                 <!-- String literals -->
50                 <SPAN TYPE="LITERAL1" DELEGATE="doubleQuoteLiteral">
51                         <BEGIN>"</BEGIN>
52                         <END>"</END>
53                 </SPAN>
54
55                 <SPAN TYPE="LITERAL1" ESCAPE="\">
56                         <BEGIN>'</BEGIN>
57                         <END>'</END>
58                 </SPAN>
59
60                 <!-- %Q(Hello world) %(Hello world)-->
61                 <SPAN_REGEXP HASH_CHAR="%" TYPE="LITERAL1" DELEGATE="doubleQuoteLiteral">
62                         <BEGIN>%Q?\(</BEGIN>
63                         <END>)</END>
64                 </SPAN_REGEXP>
65
66                 <!-- %q(Hello world) -->
67                 <SPAN TYPE="LITERAL1" ESCAPE="\">
68                         <BEGIN>%q(</BEGIN>
69                         <END>)</END>
70                 </SPAN>
71
72                 <!-- %Q{Hello world} %{Hello world} -->
73                 <SPAN_REGEXP HASH_CHAR="%" TYPE="LITERAL1" DELEGATE="doubleQuoteLiteral">
74                         <BEGIN>%Q?\{</BEGIN>
75                         <END>}</END>
76                 </SPAN_REGEXP>
77
78                 <!-- %q{Hello world} -->
79                 <SPAN TYPE="LITERAL1" ESCAPE="\">
80                         <BEGIN>%q{</BEGIN>
81                         <END>}</END>
82                 </SPAN>
83
84                 <!-- %Q[Hello world] %[Hello world] -->
85                 <SPAN_REGEXP HASH_CHAR="%" TYPE="LITERAL1" DELEGATE="doubleQuoteLiteral">
86                         <BEGIN>%Q?\[</BEGIN>
87                         <END>]</END>
88                 </SPAN_REGEXP>
89
90                 <!-- %q[Hello world] -->
91                 <SPAN TYPE="LITERAL1" ESCAPE="\">
92                         <BEGIN>%q[</BEGIN>
93                         <END>]</END>
94                 </SPAN>
95
96                 <!-- %Q<Hello world> %<Hello world> -->
97                 <SPAN_REGEXP HASH_CHAR="%" TYPE="LITERAL1" DELEGATE="doubleQuoteLiteral">
98                         <BEGIN>%Q?&lt;</BEGIN>
99                         <END>&gt;</END>
100                 </SPAN_REGEXP>
101
102                 <!-- %q<Hello world> -->
103                 <SPAN TYPE="LITERAL1" ESCAPE="\">
104                         <BEGIN>%q&lt;</BEGIN>
105                         <END>&gt;</END>
106                 </SPAN>
107
108                 <!-- I made the next three forms as three instead of two, because the
109                          first two actually support whitespace as a delimiter, and the third
110                          one doesn't. -->
111                 <!-- %Q$Hello world$ -->
112                 <SPAN_REGEXP HASH_CHAR="%Q" TYPE="LITERAL1" DELEGATE="doubleQuoteLiteral">
113                         <BEGIN>%Q([^\p{Alnum}])</BEGIN>
114                         <END>$1</END>
115                 </SPAN_REGEXP>
116
117                 <!-- %q$Hello world$ -->
118                 <SPAN_REGEXP HASH_CHAR="%q" TYPE="LITERAL1" ESCAPE="\">
119                         <BEGIN>%q([^\p{Alnum}])</BEGIN>
120                         <END>$1</END>
121                 </SPAN_REGEXP>
122
123                 <!-- %$Hello world$ -->
124                 <SPAN_REGEXP HASH_CHAR="%" TYPE="LITERAL1" DELEGATE="doubleQuoteLiteral">
125                         <BEGIN>%([^\p{Alnum}\p{Space}])</BEGIN>
126                         <END>$1</END>
127                 </SPAN_REGEXP>
128
129                 <!-- %W(Array of strings) -->
130                 <SPAN TYPE="LITERAL1" DELEGATE="doubleQuoteLiteral">
131                         <BEGIN>%W(</BEGIN>
132                         <END>)</END>
133                 </SPAN>
134
135                 <!-- %w(Array of strings) -->
136                 <SPAN TYPE="LITERAL1" ESCAPE="\">
137                         <BEGIN>%w(</BEGIN>
138                         <END>)</END>
139                 </SPAN>
140
141                 <!-- %W{Array of strings} -->
142                 <SPAN TYPE="LITERAL1" DELEGATE="doubleQuoteLiteral">
143                         <BEGIN>%W{</BEGIN>
144                         <END>}</END>
145                 </SPAN>
146
147                 <!-- %w{Array of strings} -->
148                 <SPAN TYPE="LITERAL1" ESCAPE="\">
149                         <BEGIN>%w{</BEGIN>
150                         <END>}</END>
151                 </SPAN>
152
153                 <!-- %W[Array of strings] -->
154                 <SPAN TYPE="LITERAL1" DELEGATE="doubleQuoteLiteral">
155                         <BEGIN>%W[</BEGIN>
156                         <END>]</END>
157                 </SPAN>
158
159                 <!-- %w[Array of strings] -->
160                 <SPAN TYPE="LITERAL1" ESCAPE="\">
161                         <BEGIN>%w[</BEGIN>
162                         <END>]</END>
163                 </SPAN>
164
165                 <!-- %W<Array of strings>  -->
166                 <SPAN TYPE="LITERAL1" DELEGATE="doubleQuoteLiteral">
167                         <BEGIN>%W&lt;</BEGIN>
168                         <END>&gt;</END>
169                 </SPAN>
170
171                 <!-- %w<Array of strings> -->
172                 <SPAN TYPE="LITERAL1" ESCAPE="\">
173                         <BEGIN>%w&lt;</BEGIN>
174                         <END>&gt;</END>
175                 </SPAN>
176
177                 <!-- %W$Array of strings$ -->
178                 <SPAN_REGEXP HASH_CHAR="%W" TYPE="LITERAL1" DELEGATE="doubleQuoteLiteral">
179                         <BEGIN>%W([^\p{Alnum}\p{Space}])</BEGIN>
180                         <END>$1</END>
181                 </SPAN_REGEXP>
182
183                 <!-- %w@Array of strings@ -->
184                 <SPAN_REGEXP HASH_CHAR="%w" TYPE="LITERAL1" ESCAPE="\">
185                         <BEGIN>%w([^\p{Alnum}\p{Space}])</BEGIN>
186                         <END>$1</END>
187                 </SPAN_REGEXP>
188
189                 <!-- Here documents <<"FOO" <<-"FOO" -->
190                 <!-- Unfortunately, in a SPAN_REGEXP element only the <BEGIN> tag takes
191                          a regex, not the <END> tag. So an instance of FOO anywhere in the here
192                          document will terminate highlighting; I couldn't make it smarter. -->
193                 <SPAN_REGEXP HASH_CHAR="&lt;&lt;" TYPE="LITERAL1" DELEGATE="doubleQuoteLiteral">
194                         <BEGIN>&lt;&lt;-?"([\p{Graph}]+)"</BEGIN>
195                         <END REGEXP="TRUE">^\S*$1$</END>
196                 </SPAN_REGEXP>
197
198                 <!-- Here documents <<'FOO' <<-'FOO' -->
199                 <!-- Unfortunately, in a SPAN_REGEXP element only the <BEGIN> tag takes
200                          a regex, not the <END> tag. So an instance of FOO anywhere in the here
201                          document will terminate highlighting; I couldn't make it smarter. -->
202                 <SPAN_REGEXP HASH_CHAR="&lt;&lt;" TYPE="LITERAL1">
203                         <BEGIN>&lt;&lt;-?'([\p{Graph}]+)'</BEGIN>
204                         <END REGEXP="TRUE">^\S*$1$</END>
205                 </SPAN_REGEXP>
206
207                 <!-- Here documents <<FOO <<-FOO -->
208                 <!-- Unfortunately, in a SPAN_REGEXP element only the <BEGIN> tag takes
209                          a regex, not the <END> tag. So an instance of FOO anywhere in the here
210                          document will terminate highlighting; I couldn't make it smarter. -->
211                 <SPAN_REGEXP HASH_CHAR="&lt;&lt;" TYPE="LITERAL1" DELEGATE="doubleQuoteLiteral">
212                         <BEGIN>&lt;&lt;-?([A-Za-z_]+)</BEGIN>
213                         <END REGEXP="TRUE">^\S*$1$</END>
214                 </SPAN_REGEXP>
215
216                 <!-- Shell command strings -->
217
218                 <!-- `echo foo` -->
219                 <SPAN TYPE="LITERAL2" DELEGATE="BackquoteLiteral">
220                         <BEGIN>`</BEGIN>
221                         <END>`</END>
222                 </SPAN>
223
224                 <!-- %x(echo foo) -->
225                 <SPAN TYPE="LITERAL2" DELEGATE="BackquoteLiteral">
226                         <BEGIN>%x(</BEGIN>
227                         <END>)</END>
228                 </SPAN>
229
230                 <!-- %x{echo foo} -->
231                 <SPAN TYPE="LITERAL2" DELEGATE="BackquoteLiteral">
232                         <BEGIN>%x{</BEGIN>
233                         <END>}</END>
234                 </SPAN>
235
236                 <!-- %x[echo foo] -->
237                 <SPAN TYPE="LITERAL2" DELEGATE="BackquoteLiteral">
238                         <BEGIN>%x[</BEGIN>
239                         <END>]</END>
240                 </SPAN>
241
242                 <!-- %x<echo foo> -->
243                 <SPAN TYPE="LITERAL2" DELEGATE="BackquoteLiteral">
244                         <BEGIN>%x&lt;</BEGIN>
245                         <END>&gt;</END>
246                 </SPAN>
247
248                 <!-- %x$echo foo$ -->
249                 <SPAN_REGEXP HASH_CHAR="%x" TYPE="LITERAL2" DELEGATE="BackquoteLiteral">
250                         <BEGIN>%x([^\p{Alnum}\p{Space}])</BEGIN>
251                         <END>$1</END>
252                 </SPAN_REGEXP>
253
254                 <!-- Regular expressions -->
255
256                 <!-- /regexp?/ -->
257                 <!-- If a regexp begins with a whitespace (including a newline),
258                             the beginning "/" is wrongly treated as a division operator.
259                             But such regexp is rare enough and one can use %r notations
260                             or write like "/\ ..." to force jEdit to treat it as a
261                             regexp. -->
262                 <SEQ_REGEXP HASH_CHAR="/" TYPE="OPERATOR">/=?($|\s)</SEQ_REGEXP>
263                 <!-- AT_WORD_START is TRUE not to handle "a/b/c". -->
264                 <SPAN AT_WORD_START="TRUE" TYPE="LITERAL3" DELEGATE="RegexpLiteral">
265                         <BEGIN>/</BEGIN>
266                         <END>/</END>
267                 </SPAN>
268
269                 <!-- %r(regexp?) -->
270                 <SPAN TYPE="LITERAL3" DELEGATE="RegexpLiteral">
271                         <BEGIN>%r(</BEGIN>
272                         <END>)</END>
273                 </SPAN>
274
275                 <!-- %r{regexp?} -->
276                 <SPAN TYPE="LITERAL3" DELEGATE="RegexpLiteral">
277                         <BEGIN>%r{</BEGIN>
278                         <END>}</END>
279                 </SPAN>
280
281                 <!-- %r[regexp?] -->
282                 <SPAN TYPE="LITERAL3" DELEGATE="RegexpLiteral">
283                         <BEGIN>%r[</BEGIN>
284                         <END>]</END>
285                 </SPAN>
286
287                 <!-- %r<regexp?> -->
288                 <SPAN TYPE="LITERAL3" DELEGATE="RegexpLiteral">
289                         <BEGIN>%r&lt;</BEGIN>
290                         <END>&gt;</END>
291                 </SPAN>
292
293                 <!-- %r$regexp?$ -->
294                 <SPAN_REGEXP HASH_CHAR="%r" TYPE="LITERAL3" DELEGATE="RegexpLiteral">
295                         <BEGIN>%r([^\p{Alnum}\p{Space}])</BEGIN>
296                         <END>$1</END>
297                 </SPAN_REGEXP>
298
299                 <!-- Std Comment -->
300                 <EOL_SPAN TYPE="COMMENT1">#</EOL_SPAN>
301
302                 <!-- Predefined global variables -->
303                 <SEQ_REGEXP HASH_CHAR="$-" TYPE="KEYWORD3" AT_WORD_START="TRUE">\$-[0adFiIKlpvw](?![\p{Alnum}_])
304                 </SEQ_REGEXP>
305
306                 <SEQ_REGEXP HASH_CHAR="$" TYPE="KEYWORD3" AT_WORD_START="TRUE">\$[0-9!@&amp;\+`'=~/\\,\.;&lt;&gt;_\*"\$\?\:F](?![\p{Alnum}_])</SEQ_REGEXP>
307
308                 <!-- Because of the ? char, this can't be done as a KEYWORD element -->
309                 <SEQ TYPE="KEYWORD1" AT_WORD_START="TRUE">defined?</SEQ>
310
311                 <!-- Highlight "include" but not "include?" -->
312                 <SEQ_REGEXP HASH_CHAR="include" TYPE="KEYWORD2" AT_WORD_START="TRUE">include(?![\p{Alnum}_\?])
313                 </SEQ_REGEXP>
314
315                 <!-- Not Operators but like the syntax highlight to match operators -->
316                 <SEQ TYPE="OPERATOR">{</SEQ>
317                 <SEQ TYPE="OPERATOR">}</SEQ>
318                 <SEQ TYPE="OPERATOR">(</SEQ>
319                 <SEQ TYPE="OPERATOR">)</SEQ>
320
321                 <!-- Arithmetic operators -->
322                 <SEQ TYPE="OPERATOR">::</SEQ>
323                 <SEQ TYPE="OPERATOR">===</SEQ>
324                 <SEQ TYPE="OPERATOR">=</SEQ>
325                 <SEQ TYPE="OPERATOR">&gt;&gt;</SEQ>
326                 <SEQ TYPE="OPERATOR">&lt;&lt;</SEQ>
327                 <SEQ TYPE="OPERATOR">&lt;=</SEQ>
328                 <SEQ TYPE="OPERATOR">+</SEQ>
329                 <SEQ TYPE="OPERATOR">-</SEQ>
330                 <SEQ TYPE="OPERATOR">/</SEQ>
331
332                 <SEQ TYPE="OPERATOR">**</SEQ>
333                 <SEQ TYPE="OPERATOR">*</SEQ>
334
335                 <SEQ TYPE="OPERATOR">%</SEQ>
336
337                 <!-- Logical Operators -->
338                 <SEQ TYPE="OPERATOR">&amp;</SEQ>
339                 <SEQ TYPE="OPERATOR">|</SEQ>
340                 <SEQ TYPE="OPERATOR">!</SEQ>
341                 <SEQ TYPE="OPERATOR">&gt;</SEQ>
342                 <SEQ TYPE="OPERATOR">&lt;</SEQ>
343                 <SEQ TYPE="OPERATOR">^</SEQ>
344                 <SEQ TYPE="OPERATOR">~</SEQ>
345
346                 <!-- Range operators -->
347                 <SEQ TYPE="OPERATOR">...</SEQ>
348                 <SEQ TYPE="OPERATOR">..</SEQ>
349
350                 <SEQ TYPE="OPERATOR">]</SEQ>
351                 <SEQ TYPE="OPERATOR">[</SEQ>
352                 <SEQ TYPE="OPERATOR">?</SEQ>
353
354                 <!-- Symbols -->
355                 <SEQ_REGEXP AT_WORD_START="TRUE" HASH_CHAR=":" TYPE="LITERAL4">:[\p{Alpha}_][\p{Alnum}_]*[?]?</SEQ_REGEXP>
356                 <SPAN AT_WORD_START="TRUE" TYPE="LITERAL4">
357                   <BEGIN>:'</BEGIN> <END>'</END>
358                 </SPAN>
359                 <!-- bang = '!'
360                      :"hello world#{bang}" -->
361                 <SPAN AT_WORD_START="TRUE" TYPE="LITERAL4" DELEGATE="doubleQuoteSymbol">
362                   <BEGIN>:"</BEGIN> <END>"</END>
363                 </SPAN>
364
365                 <!-- %s$Hello world$ -->
366                 <SPAN_REGEXP HASH_CHAR="%s" TYPE="LITERAL4">
367                   <BEGIN>%s([^\p{Alnum}])</BEGIN>
368                   <END>$1</END>
369     </SPAN_REGEXP>
370                 <KEYWORDS>
371                         <KEYWORD1>BEGIN</KEYWORD1>
372                         <KEYWORD1>END</KEYWORD1>
373                         <KEYWORD1>alias</KEYWORD1>
374                         <KEYWORD1>begin</KEYWORD1>
375                         <KEYWORD1>break</KEYWORD1>
376                         <KEYWORD1>case</KEYWORD1>
377                         <KEYWORD1>class</KEYWORD1>
378                         <KEYWORD1>def</KEYWORD1>
379                         <KEYWORD1>do</KEYWORD1>
380                         <KEYWORD1>else</KEYWORD1>
381                         <KEYWORD1>elsif</KEYWORD1>
382                         <KEYWORD1>end</KEYWORD1>
383                         <KEYWORD1>ensure</KEYWORD1>
384                         <KEYWORD1>for</KEYWORD1>
385                         <KEYWORD1>if</KEYWORD1>
386                         <KEYWORD1>in</KEYWORD1>
387                         <KEYWORD1>module</KEYWORD1>
388                         <KEYWORD1>next</KEYWORD1>
389                         <KEYWORD1>print</KEYWORD1>
390                         <KEYWORD1>puts</KEYWORD1>
391                         <KEYWORD1>redo</KEYWORD1>
392                         <KEYWORD1>rescue</KEYWORD1>
393                         <KEYWORD1>retry</KEYWORD1>
394                         <KEYWORD1>return</KEYWORD1>
395                         <KEYWORD1>then</KEYWORD1>
396                         <KEYWORD1>undef</KEYWORD1>
397                         <KEYWORD1>unless</KEYWORD1>
398                         <KEYWORD1>until</KEYWORD1>
399                         <KEYWORD1>when</KEYWORD1>
400                         <KEYWORD1>while</KEYWORD1>
401                         <KEYWORD1>yield</KEYWORD1>
402
403                         <KEYWORD2>load</KEYWORD2>
404                         <KEYWORD2>require</KEYWORD2>
405                         <KEYWORD2>initialize</KEYWORD2>
406
407                         <OPERATOR>and</OPERATOR>
408                         <OPERATOR>not</OPERATOR>
409                         <OPERATOR>or</OPERATOR>
410
411                         <KEYWORD3>false</KEYWORD3>
412                         <KEYWORD3>nil</KEYWORD3>
413                         <KEYWORD3>self</KEYWORD3>
414                         <KEYWORD3>super</KEYWORD3>
415                         <KEYWORD3>true</KEYWORD3>
416
417                         <KEYWORD3>$defout</KEYWORD3>
418                         <KEYWORD3>$deferr</KEYWORD3>
419                         <KEYWORD3>$stderr</KEYWORD3>
420                         <KEYWORD3>$stdin</KEYWORD3>
421                         <KEYWORD3>$stdout</KEYWORD3>
422                         <KEYWORD3>$DEBUG</KEYWORD3>
423                         <KEYWORD3>$FILENAME</KEYWORD3>
424                         <KEYWORD3>$LOAD_PATH</KEYWORD3>
425                         <KEYWORD3>$SAFE</KEYWORD3>
426                         <KEYWORD3>$VERBOSE</KEYWORD3>
427                         <KEYWORD3>__FILE__</KEYWORD3>
428                         <KEYWORD3>__LINE__</KEYWORD3>
429                         <KEYWORD3>ARGF</KEYWORD3>
430                         <KEYWORD3>ARGV</KEYWORD3>
431                         <KEYWORD3>ENV</KEYWORD3>
432                         <KEYWORD3>DATA</KEYWORD3>
433                         <KEYWORD3>FALSE</KEYWORD3>
434                         <KEYWORD3>NIL</KEYWORD3>
435                         <KEYWORD3>RUBY_PLATFORM</KEYWORD3>
436                         <KEYWORD3>RUBY_RELEASE_DATE</KEYWORD3>
437                         <KEYWORD3>RUBY_VERSION</KEYWORD3>
438                         <KEYWORD3>STDERR</KEYWORD3>
439                         <KEYWORD3>STDIN</KEYWORD3>
440                         <KEYWORD3>STDOUT</KEYWORD3>
441                         <KEYWORD3>SCRIPT_LINES__</KEYWORD3>
442                         <KEYWORD3>TOPLEVEL_BINDING</KEYWORD3>
443                         <KEYWORD3>TRUE</KEYWORD3>
444                 </KEYWORDS>
445         </RULES>
446
447         <!-- Delegate contents of #{} expression in double quotes to MAIN so that
448              it will be syntax highlighted as well -->
449         <RULES DEFAULT="LITERAL1" SET="doubleQuoteLiteral" ESCAPE="\">
450                 <SPAN DELEGATE="MAIN" TYPE="OPERATOR">
451                         <BEGIN>#{</BEGIN>
452                         <END>}</END>
453                 </SPAN>
454                 <MARK_FOLLOWING TYPE="KEYWORD4">#@@</MARK_FOLLOWING>
455                 <MARK_FOLLOWING TYPE="KEYWORD4">#@</MARK_FOLLOWING>
456                 <MARK_FOLLOWING TYPE="NULL">#$</MARK_FOLLOWING>
457         </RULES>
458         <!-- Delegate contents of #{} expression in a double quoted symbol to MAIN so that
459              it will be syntax highlighted as well -->
460         <RULES DEFAULT="LITERAL4" SET="doubleQuoteSymbol" ESCAPE="\">
461       <SPAN DELEGATE="MAIN" TYPE="OPERATOR">
462       <BEGIN>#{</BEGIN>
463       <END>}</END>
464     </SPAN>
465     <MARK_FOLLOWING TYPE="KEYWORD4">#@@</MARK_FOLLOWING>
466     <MARK_FOLLOWING TYPE="KEYWORD4">#@</MARK_FOLLOWING>
467     <MARK_FOLLOWING TYPE="NULL">#$</MARK_FOLLOWING>
468   </RULES>
469                 
470         <!-- Delegate contents of #{} expression in backquotes to MAIN so that
471              it will be syntax highlighted as well -->
472         <RULES DEFAULT="LITERAL2" SET="BackquoteLiteral" ESCAPE="\">
473                 <SPAN DELEGATE="MAIN" TYPE="OPERATOR">
474                         <BEGIN>#{</BEGIN>
475                         <END>}</END>
476                 </SPAN>
477                 <MARK_FOLLOWING TYPE="KEYWORD4">#@@</MARK_FOLLOWING>
478                 <MARK_FOLLOWING TYPE="KEYWORD4">#@</MARK_FOLLOWING>
479                 <MARK_FOLLOWING TYPE="NULL">#$</MARK_FOLLOWING>
480         </RULES>
481
482         <!-- Delegate contents of #{} expression in a regexp to MAIN so that
483              it will be syntax highlighted as well -->
484         <RULES DEFAULT="LITERAL3" SET="RegexpLiteral" ESCAPE="\">
485                 <SPAN DELEGATE="MAIN" TYPE="OPERATOR">
486                         <BEGIN>#{</BEGIN>
487                         <END>}</END>
488                 </SPAN>
489                 <MARK_FOLLOWING TYPE="KEYWORD4">#@@</MARK_FOLLOWING>
490                 <MARK_FOLLOWING TYPE="KEYWORD4">#@</MARK_FOLLOWING>
491                 <MARK_FOLLOWING TYPE="NULL">#$</MARK_FOLLOWING>
492         </RULES>
493 </MODE>