pygments.rb 0.2.4 → 0.2.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. data/lib/pygments/version.rb +1 -1
  2. data/vendor/pygments-main/AUTHORS +14 -0
  3. data/vendor/pygments-main/CHANGES +34 -3
  4. data/vendor/pygments-main/Makefile +1 -1
  5. data/vendor/pygments-main/docs/generate.py +1 -1
  6. data/vendor/pygments-main/external/markdown-processor.py +1 -1
  7. data/vendor/pygments-main/external/moin-parser.py +1 -1
  8. data/vendor/pygments-main/external/rst-directive-old.py +1 -1
  9. data/vendor/pygments-main/external/rst-directive.py +1 -1
  10. data/vendor/pygments-main/pygments/__init__.py +1 -1
  11. data/vendor/pygments-main/pygments/cmdline.py +4 -1
  12. data/vendor/pygments-main/pygments/console.py +1 -1
  13. data/vendor/pygments-main/pygments/filter.py +1 -1
  14. data/vendor/pygments-main/pygments/filters/__init__.py +1 -1
  15. data/vendor/pygments-main/pygments/formatter.py +1 -1
  16. data/vendor/pygments-main/pygments/formatters/__init__.py +1 -1
  17. data/vendor/pygments-main/pygments/formatters/_mapping.py +1 -1
  18. data/vendor/pygments-main/pygments/formatters/bbcode.py +1 -1
  19. data/vendor/pygments-main/pygments/formatters/html.py +2 -2
  20. data/vendor/pygments-main/pygments/formatters/img.py +1 -1
  21. data/vendor/pygments-main/pygments/formatters/latex.py +3 -2
  22. data/vendor/pygments-main/pygments/formatters/other.py +1 -1
  23. data/vendor/pygments-main/pygments/formatters/rtf.py +1 -1
  24. data/vendor/pygments-main/pygments/formatters/svg.py +1 -1
  25. data/vendor/pygments-main/pygments/formatters/terminal.py +5 -2
  26. data/vendor/pygments-main/pygments/formatters/terminal256.py +5 -2
  27. data/vendor/pygments-main/pygments/lexer.py +29 -10
  28. data/vendor/pygments-main/pygments/lexers/__init__.py +14 -11
  29. data/vendor/pygments-main/pygments/lexers/_asybuiltins.py +1 -1
  30. data/vendor/pygments-main/pygments/lexers/_clbuiltins.py +1 -1
  31. data/vendor/pygments-main/pygments/lexers/_luabuiltins.py +1 -1
  32. data/vendor/pygments-main/pygments/lexers/_mapping.py +41 -23
  33. data/vendor/pygments-main/pygments/lexers/_phpbuiltins.py +1 -1
  34. data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +1 -1
  35. data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +29 -0
  36. data/vendor/pygments-main/pygments/lexers/_vimbuiltins.py +3 -3
  37. data/vendor/pygments-main/pygments/lexers/agile.py +148 -443
  38. data/vendor/pygments-main/pygments/lexers/asm.py +5 -3
  39. data/vendor/pygments-main/pygments/lexers/compiled.py +298 -294
  40. data/vendor/pygments-main/pygments/lexers/dotnet.py +40 -34
  41. data/vendor/pygments-main/pygments/lexers/functional.py +723 -4
  42. data/vendor/pygments-main/pygments/lexers/hdl.py +228 -6
  43. data/vendor/pygments-main/pygments/lexers/jvm.py +678 -0
  44. data/vendor/pygments-main/pygments/lexers/math.py +65 -2
  45. data/vendor/pygments-main/pygments/lexers/other.py +875 -481
  46. data/vendor/pygments-main/pygments/lexers/parsers.py +1 -1
  47. data/vendor/pygments-main/pygments/lexers/shell.py +360 -0
  48. data/vendor/pygments-main/pygments/lexers/special.py +1 -1
  49. data/vendor/pygments-main/pygments/lexers/sql.py +565 -0
  50. data/vendor/pygments-main/pygments/lexers/templates.py +1 -1
  51. data/vendor/pygments-main/pygments/lexers/text.py +237 -100
  52. data/vendor/pygments-main/pygments/lexers/web.py +146 -10
  53. data/vendor/pygments-main/pygments/plugin.py +1 -1
  54. data/vendor/pygments-main/pygments/scanner.py +1 -1
  55. data/vendor/pygments-main/pygments/style.py +1 -1
  56. data/vendor/pygments-main/pygments/styles/__init__.py +2 -1
  57. data/vendor/pygments-main/pygments/styles/autumn.py +1 -1
  58. data/vendor/pygments-main/pygments/styles/borland.py +1 -1
  59. data/vendor/pygments-main/pygments/styles/bw.py +1 -1
  60. data/vendor/pygments-main/pygments/styles/colorful.py +1 -1
  61. data/vendor/pygments-main/pygments/styles/default.py +1 -1
  62. data/vendor/pygments-main/pygments/styles/emacs.py +1 -1
  63. data/vendor/pygments-main/pygments/styles/friendly.py +1 -1
  64. data/vendor/pygments-main/pygments/styles/fruity.py +1 -2
  65. data/vendor/pygments-main/pygments/styles/manni.py +1 -1
  66. data/vendor/pygments-main/pygments/styles/monokai.py +1 -1
  67. data/vendor/pygments-main/pygments/styles/murphy.py +1 -1
  68. data/vendor/pygments-main/pygments/styles/native.py +1 -1
  69. data/vendor/pygments-main/pygments/styles/pastie.py +1 -1
  70. data/vendor/pygments-main/pygments/styles/perldoc.py +1 -1
  71. data/vendor/pygments-main/pygments/styles/rrt.py +33 -0
  72. data/vendor/pygments-main/pygments/styles/tango.py +1 -1
  73. data/vendor/pygments-main/pygments/styles/trac.py +1 -1
  74. data/vendor/pygments-main/pygments/styles/vim.py +1 -1
  75. data/vendor/pygments-main/pygments/styles/vs.py +1 -1
  76. data/vendor/pygments-main/pygments/token.py +1 -1
  77. data/vendor/pygments-main/pygments/unistring.py +1 -1
  78. data/vendor/pygments-main/pygments/util.py +2 -2
  79. data/vendor/pygments-main/scripts/check_sources.py +2 -2
  80. data/vendor/pygments-main/scripts/find_codetags.py +1 -1
  81. data/vendor/pygments-main/scripts/find_error.py +5 -2
  82. data/vendor/pygments-main/scripts/get_vimkw.py +9 -4
  83. data/vendor/pygments-main/setup.py +1 -1
  84. data/vendor/pygments-main/tests/examplefiles/classes.dylan +16 -0
  85. data/vendor/pygments-main/tests/examplefiles/coq_RelationClasses +447 -0
  86. data/vendor/pygments-main/tests/examplefiles/example.cls +15 -0
  87. data/vendor/pygments-main/tests/examplefiles/example.moon +629 -0
  88. data/vendor/pygments-main/tests/examplefiles/example.p +34 -0
  89. data/vendor/pygments-main/tests/examplefiles/example.snobol +15 -0
  90. data/vendor/pygments-main/tests/examplefiles/example.u +548 -0
  91. data/vendor/pygments-main/tests/examplefiles/example_elixir.ex +363 -0
  92. data/vendor/pygments-main/tests/examplefiles/foo.sce +6 -0
  93. data/vendor/pygments-main/tests/examplefiles/http_request_example +14 -0
  94. data/vendor/pygments-main/tests/examplefiles/http_response_example +27 -0
  95. data/vendor/pygments-main/tests/examplefiles/irc.lsp +214 -0
  96. data/vendor/pygments-main/tests/examplefiles/markdown.lsp +679 -0
  97. data/vendor/pygments-main/tests/examplefiles/nemerle_sample.n +4 -2
  98. data/vendor/pygments-main/tests/examplefiles/reversi.lsp +427 -0
  99. data/vendor/pygments-main/tests/examplefiles/scilab.sci +30 -0
  100. data/vendor/pygments-main/tests/examplefiles/test.bro +250 -0
  101. data/vendor/pygments-main/tests/examplefiles/test.cs +23 -0
  102. data/vendor/pygments-main/tests/examplefiles/test.dart +23 -0
  103. data/vendor/pygments-main/tests/examplefiles/test.ecl +58 -0
  104. data/vendor/pygments-main/tests/examplefiles/test.fan +818 -0
  105. data/vendor/pygments-main/tests/examplefiles/test.ps1 +108 -0
  106. data/vendor/pygments-main/tests/examplefiles/test.vhdl +161 -0
  107. data/vendor/pygments-main/tests/old_run.py +1 -1
  108. data/vendor/pygments-main/tests/run.py +1 -1
  109. data/vendor/pygments-main/tests/test_basic_api.py +4 -3
  110. data/vendor/pygments-main/tests/test_clexer.py +1 -1
  111. data/vendor/pygments-main/tests/test_cmdline.py +1 -1
  112. data/vendor/pygments-main/tests/test_examplefiles.py +4 -3
  113. data/vendor/pygments-main/tests/test_html_formatter.py +33 -1
  114. data/vendor/pygments-main/tests/test_latex_formatter.py +1 -1
  115. data/vendor/pygments-main/tests/test_perllexer.py +137 -0
  116. data/vendor/pygments-main/tests/test_regexlexer.py +1 -1
  117. data/vendor/pygments-main/tests/test_token.py +1 -1
  118. data/vendor/pygments-main/tests/test_using_api.py +1 -1
  119. data/vendor/pygments-main/tests/test_util.py +35 -5
  120. metadata +30 -4
@@ -0,0 +1,34 @@
1
+ {include.i}
2
+ {nested.i {include.i}}
3
+
4
+ &SCOPED-DEFINE MY_NAME "Abe"
5
+
6
+ DEF VAR i AS INT NO-UNDO.
7
+ i = 0xABE + 1337 / (1 * 1.00)
8
+
9
+ def var clowercasetest as char no-undo.
10
+ DEF VAR vardashtest AS DATETIME-TZ NO-UNDO.
11
+
12
+ DEFINE TEMP-TABLE ttNames NO-UNDO
13
+ FIELD cName AS CHAR
14
+ INDEX IXPK_ttNames IS PRIMARY UNIQUE cName.
15
+
16
+ /* One-line comment */
17
+ /* Two-line
18
+ Comment */
19
+ /*
20
+ Nested
21
+ /*
22
+ Multiline
23
+ /*
24
+ Comment
25
+ */
26
+ */
27
+ */
28
+
29
+ CREATE ttNames.
30
+ ASSIGN ttNames.cName = {&MY_NAME}.
31
+
32
+ FOR EACH ttNames:
33
+ MESSAGE "Hello, " + ttNames.cName + '!' VIEW-AS ALERT-BOX.
34
+ END.
@@ -0,0 +1,15 @@
1
+ -SOME RANDOM DIRECTIVE WOULD GO HERE
2
+ *
3
+ * SNOBOL4 example file for lexer
4
+ *
5
+ SOME.THING_OR_OTHER32 = 1 + 1.0 - 1E3 * 1E-3 ** 2.718284590E0
6
+ + :F(END)S(IN_LOOP)
7
+ PATTERN = LEN(3) ("GAR" | "BAR")
8
+ IN_LOOP THING = INPUT :F(END)
9
+ THING LEN(3) ("GAR" | "BAR") :S(OK)
10
+ OUTPUT = THING " : Failure!" :(IN_LOOP)
11
+ OK OUTPUT = THING ' : "Success"!' :(IN_LOOP)
12
+ END
13
+ FOOBAR
14
+ FOOGAR
15
+ THiNIg
@@ -0,0 +1,548 @@
1
+ // This is a one line comment.
2
+ /* an inner comment */
3
+
4
+ /* nested /* comments */ */
5
+
6
+ /*
7
+ /*
8
+ Multi-line.
9
+ */
10
+ */
11
+
12
+ // Binary blob escape.
13
+ //"some text \B(3)("\") ouhyeah" == "\"\\\"";
14
+ "some text \B(3)("\") ouhyeah" == "\"\\\"";
15
+ 'some text \B(3)('\') ouhyeah' == '\'\\\'';
16
+
17
+ //"\B(4)()"'()";
18
+ "\B(4)()"'()";
19
+ '\B(4)()'"()';
20
+
21
+ //blob size limits
22
+ "hey ! \B(0)() oh !"
23
+
24
+ //blob format is wrong
25
+ "hey ! \B(2)(aaa) oh !"
26
+ "hey ! \B(100)(aaa) oh !"
27
+
28
+ //multiple blob in a string
29
+ "hey ! \B(3)(aaa) hey ! \B(3)(aaa) oh !"
30
+
31
+ // multiple digits blob size
32
+ "hey ! \B(10)(aaaaaaaaaa) !"
33
+ "hey ! \B(10)(aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) !"
34
+ "hey ! \B(100)(a) !"
35
+
36
+ // multiple digits blob size
37
+ "hey ! \B(007)(aaaaaaa) !"
38
+ "hey ! \B(007)(aa) !"
39
+ "hey ! \B(007)(aaaaaaaaaaaaaaaaaa) !"
40
+
41
+ // deprecated and restricted keyworks
42
+ emit Event.new;
43
+ static int main();
44
+
45
+ loopn (2) {echo("a");};
46
+
47
+ foreach (var i : [1,2,3,4]) {
48
+ echo(i);
49
+ };
50
+
51
+ function() {};
52
+
53
+ var 'if';
54
+ var this.'else';
55
+
56
+ var '%x';
57
+ var '1 2 3';
58
+ var this.'[]';
59
+
60
+ // angles
61
+ pi == 180deg;
62
+ pi == 200grad;
63
+
64
+ // Dictionary
65
+ [ => ]; // The empty dictionary
66
+
67
+ // duration
68
+ 1d == 24h;
69
+ 0.5d == 12h;
70
+ 1h == 60min;
71
+ 1min == 60s;
72
+ 1s == 1000ms;
73
+
74
+ 1s == 1;
75
+ 1s 2s 3s == 6;
76
+ 1s 1ms == 1.001;
77
+ 1ms 1s == 1.001;
78
+
79
+
80
+ 1 == 1;
81
+ 1 == 1.0;
82
+ 1.2 == 1.2000;
83
+ 1.234e6 == 1234000;
84
+ 1e+11 == 1E+11;
85
+ 1e10 == 10000000000;
86
+ 1e30 == 1e10 * 1e10 * 1e10;
87
+
88
+
89
+ 0.000001;
90
+
91
+ 0.0000001;
92
+
93
+ 0.00000000001;
94
+
95
+ 1e+3;
96
+
97
+ 1E-5;
98
+
99
+
100
+ 1.;
101
+ // [00004701:error] !!! syntax error: unexpected ;
102
+
103
+ 0x2a == 42;
104
+ 0x2A == 42;
105
+ 0xabcdef == 11259375;
106
+ 0xABCDEF == 11259375;
107
+ 0xFFFFFFFF == 4294967295;
108
+
109
+
110
+ //123foo;
111
+ //[00005658:error] !!! syntax error: invalid token: '123foo'
112
+ //12.3foo;
113
+ //[00018827:error] !!! syntax error: invalid token: '12.3foo'
114
+ 0xabcdef;
115
+ //[00060432] 11259375
116
+ //0xabcdefg;
117
+ //[00061848:error] !!! syntax error: invalid token: '0xabcdefg'
118
+
119
+
120
+ []; // The empty list
121
+ [1, 2, 3];
122
+
123
+ // Special characters.
124
+ "\"" == "\"";
125
+ "\\" == "\\";
126
+
127
+ // ASCII characters.
128
+ "\a" == "\007"; "\a" == "\x07";
129
+ "\b" == "\010"; "\b" == "\x08";
130
+ "\f" == "\014"; "\f" == "\x0c";
131
+ "\n" == "\012"; "\n" == "\x0a";
132
+ "\r" == "\015"; "\r" == "\x0d";
133
+ "\t" == "\011"; "\t" == "\x09";
134
+ "\v" == "\013"; "\v" == "\x0b";
135
+
136
+ // Octal escapes.
137
+ "\0" == "\00"; "\0" == "\000";
138
+ "\0000" == "\0""0";
139
+ "\062\063" == "23";
140
+
141
+ // Hexadecimal escapes.
142
+ "\x00" == "\0";
143
+ "\x32\x33" == "23";
144
+
145
+
146
+
147
+ "foo" "bar" "baz" == "foobarbaz";
148
+
149
+ // Tuples
150
+ ();
151
+ [00000000] ()
152
+ (1,);
153
+ [00000000] (1,)
154
+ (1, 2);
155
+ [00000000] (1, 2)
156
+ (1, 2, 3, 4,);
157
+ [00000000] (1, 2, 3, 4)
158
+
159
+ function Global.verboseId(var x)
160
+ {
161
+ echo(x) | x
162
+ }|;
163
+ class verboseId(Global).math : verboseId(Math)
164
+ {
165
+ };
166
+
167
+ {
168
+ for (3)
169
+ {
170
+ sleep(1s);
171
+ echo("ping");
172
+ },
173
+ sleep(0.5s);
174
+ for (3)
175
+ {
176
+ sleep(1s);
177
+ echo("pong");
178
+ },
179
+ };
180
+
181
+ 1 + 1 == 2;
182
+ 1 - 2 == -1;
183
+ 2 * 3 == 6;
184
+ 10 / 2 == 5;
185
+ 2 ** 10 == 1024;
186
+ -(1 + 2) == -3;
187
+ 1 + 2 * 3 == 7;
188
+ (1 + 2) * 3 == 9;
189
+ -2 ** 2 == -4;
190
+ - - - - 1 == 1;
191
+
192
+ a = b
193
+ a += b
194
+ a -= b
195
+ a *= b
196
+ a /= b
197
+ a %= b
198
+ a ^= b
199
+
200
+
201
+ var value = 0|;
202
+ var valueAlias = value|;
203
+ value += 10;
204
+ valueAlias;
205
+ var myList = []|;
206
+ var myList.specialFeature = 42|;
207
+ myList += [1, 2, 3];
208
+ myList.specialFeature;
209
+ var myOtherList = myList + [4, 5];
210
+ myOtherList.specialFeature;
211
+ var something = []|;
212
+ var somethingElse = something|;
213
+ something += [1, 2];
214
+ somethingElse += [3, 4];
215
+ something;
216
+
217
+
218
+ class Counter
219
+ {
220
+ var count = 0;
221
+ function init (n) { var this.count = n };
222
+ // Display the value, and the identity.
223
+ function asString() { "%s @ %s" % [count, uid ] };
224
+ function '+'(var n) { new(count + n) };
225
+ function '-'(var n) { new(count - n) };
226
+ }|;
227
+
228
+
229
+ class ImmutableCounter : Counter
230
+ {
231
+ function '+='(var n) { this + n };
232
+ function '-='(var n) { this - n };
233
+ }|;
234
+
235
+ var ic1 = ImmutableCounter.new(0);
236
+ var ic2 = ic1;
237
+
238
+ ic1 += 1;
239
+ ic1;
240
+ ic2;
241
+
242
+
243
+ a << b
244
+ a >> b
245
+ a ^ b
246
+
247
+ 4 << 2 == 16;
248
+ 4 >> 2 == 1;
249
+
250
+ !a
251
+ a && b
252
+ a || b
253
+
254
+ true && true;
255
+ true || false;
256
+ !true == false;
257
+ true || (1 / 0);
258
+ (false && (1 / 0)) == false;
259
+
260
+ a == b
261
+ a != b
262
+ a === b
263
+ a !== b
264
+ a ~= b
265
+ a =~= b
266
+ a < b
267
+ a <= b
268
+ a > b
269
+ a >= b
270
+
271
+ assert{
272
+ ! (0 < 0);
273
+ 0 <= 0;
274
+ 0 == 0;
275
+ 0 !== 0;
276
+ };
277
+
278
+ a in b
279
+ a not in b
280
+ a[args]
281
+ a[args] = v
282
+
283
+ 1 in [0, 1, 2];
284
+ 3 not in [0, 1, 2];
285
+
286
+ "one" in ["zero" => 0, "one" => 1, "two" => 2];
287
+ "three" not in ["zero" => 0, "one" => 1, "two" => 2];
288
+
289
+ a.b
290
+ a.b(args)
291
+ a->b
292
+ a->b = v
293
+ a.&b
294
+
295
+ var obj = Object.new|;
296
+ function obj.f() { 24 }|;
297
+
298
+
299
+ var f = function(a, b) {
300
+ echo(b + a);
301
+ }|
302
+ f(1, 0);
303
+
304
+
305
+ function g3()
306
+ {
307
+ return; // Stop execution at this point and return void
308
+ echo(0); // This is not executed
309
+ }|
310
+
311
+ Object.setProperty, to define/set a property.
312
+ Object.getProperty, to get a property.
313
+ Object.removeProperty, to delete a property.
314
+ Object.hasProperty, to test for the existence of a property.
315
+ Object.properties, to get all the properties of a slot.
316
+
317
+ enum Suit
318
+ {
319
+ hearts,
320
+ diamonds,
321
+ clubs,
322
+ spades, // Last comma is optional
323
+ };
324
+
325
+ for (var suit in Suit)
326
+ echo("%s the ace of %s." % [find_ace(suit), suit]);
327
+
328
+ switch ( ("foo", [1, 2]) )
329
+ {
330
+ // The pattern does not match the values of the list.
331
+ case ("foo", [2, 1]):
332
+ echo("fail");
333
+
334
+ // The pattern does not match the tuple.
335
+ case ["foo", [1, 2]]:
336
+ echo("fail");
337
+
338
+ // The pattern matches and binds the variable "l"
339
+ // but the condition is not verified.
340
+ case ("foo", var l) if l.size == 0:
341
+ echo("fail");
342
+
343
+ // The pattern matches.
344
+ case ("foo", [var a, var b]):
345
+ echo("foo(%s, %s)" % [a, b]);
346
+ };
347
+ //[00000000] *** foo(1, 2)
348
+
349
+ {
350
+ ["b" => var b, "a" => var a] = ["a" => 1, "b" => 2, "c" => 3];
351
+ echo("a = %d, b = %d" % [a, b]);
352
+ };
353
+ //[00000000] *** a = 1, b = 2
354
+
355
+
356
+ switch (["speed" => 2, "time" => 6s])
357
+ {
358
+ case ["speed" => var s] if s > 3:
359
+ echo("Too fast");
360
+ case ["speed" => var s, "time" => var t] if s * t > 10:
361
+ echo("Too far");
362
+ };
363
+ //[00000000] *** Too far
364
+
365
+
366
+ try
367
+ {
368
+ throw ("message", 0)
369
+ }
370
+ catch (var e if e.isA(Exception))
371
+ {
372
+ echo(e.message)
373
+ }
374
+ catch ((var msg, var value) if value.isA(Float))
375
+ {
376
+ echo("%s: %d" % [msg, value])
377
+ };
378
+ //[00000000] *** message: 0
379
+
380
+
381
+ {
382
+ var e = Event.new;
383
+ at (e?(var msg, var value) if value % 2 == 0)
384
+ echo("%s: %d" % [msg, value]);
385
+
386
+ // Does not trigger the "at" because the guard is not verified.
387
+ e!("message", 1);
388
+
389
+ // Trigger the "at".
390
+ e!("message", 2);
391
+ };
392
+ //[00000000] *** message: 2
393
+
394
+ for (var i = 0; i < 8; i++)
395
+ {
396
+ if (i % 2 != 0)
397
+ continue;
398
+ echo(i);
399
+ };
400
+
401
+ do (1024)
402
+ {
403
+ assert(this == 1024);
404
+ assert(sqrt == 32);
405
+ setSlot("y", 23);
406
+ }.y;
407
+
408
+ {
409
+ var n = 10|;
410
+ var res = []|;
411
+ loop;{
412
+ n--;
413
+ res << n;
414
+ if (n == 0)
415
+ break
416
+ };
417
+ res
418
+ }
419
+
420
+
421
+ {
422
+ var n = 10|;
423
+ var res = []|;
424
+ loop|{
425
+ n--;
426
+ res << n;
427
+ if (n == 0)
428
+ break
429
+ };
430
+ res
431
+ }
432
+
433
+
434
+ var j = 3|
435
+ while (0 < j)
436
+ {
437
+ echo(j);
438
+ j--;
439
+ };
440
+
441
+
442
+ {
443
+ var i = 4|
444
+ while| (true)
445
+ {
446
+ i -= 1;
447
+ echo ("in: " + i);
448
+ if (i == 1)
449
+ break
450
+ else if (i == 2)
451
+ continue;
452
+ echo ("out: " + i);
453
+ };
454
+ };
455
+
456
+
457
+
458
+ function test(e)
459
+ {
460
+ try
461
+ { throw e; }
462
+ catch (0)
463
+ { echo("zero") }
464
+ catch ([var x, var y])
465
+ { echo(x + y) }
466
+ } | {};
467
+
468
+ try { echo("try") }
469
+ catch { echo("catch")}
470
+ else { echo("else")};
471
+
472
+
473
+ try
474
+ {
475
+ echo("inside");
476
+ }
477
+ finally
478
+ {
479
+ echo("finally");
480
+ };
481
+ //[00000001] *** inside
482
+ //[00000002] *** finally
483
+
484
+ at (e?(var start) ~ 1s)
485
+ echo("in : %s" % (time - start).round)
486
+ onleave
487
+ echo("out: %s" % (time - start).round);
488
+
489
+ // This emission is too short to trigger the at.
490
+ e!(time);
491
+
492
+ // This one is long enough.
493
+ // The body triggers 1s after the emission started.
494
+ e!(time) ~ 2s;
495
+ //[00001000] *** in : 1
496
+ //[00002000] *** out: 2
497
+
498
+
499
+ timeout (2.1s)
500
+ every (1s)
501
+ echo("Are you still there?");
502
+ //[00000000] *** Are you still there?
503
+ //[00001000] *** Are you still there?
504
+ //[00002000] *** Are you still there?
505
+
506
+ every| (1s)
507
+ {
508
+ echo("aba");
509
+ };
510
+
511
+ for, (var i = 3; 0 < i; i -= 1)
512
+ {
513
+ echo (i);
514
+ };
515
+
516
+
517
+ for& (var i: [0, 1, 2])
518
+ {
519
+ echo (i * i);
520
+ };
521
+
522
+ loop,{
523
+ };
524
+
525
+
526
+ waituntil (e?(1, var b));
527
+
528
+ whenever (e?("arg", var arg) if arg % 2)
529
+ echo("e (%s) on" % arg)
530
+ else
531
+ echo("e off");
532
+
533
+
534
+ while, (i)
535
+ {
536
+ var j = i -= 1;
537
+ }|
538
+
539
+
540
+ var y = 0;
541
+ {
542
+ sleep(0.5s);
543
+ y = 100 smooth:3s,
544
+ },
545
+
546
+
547
+
548
+