rubylexer 0.6.2

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.
data/testdata/23.rb ADDED
@@ -0,0 +1,24 @@
1
+ alias`#`,`//`
2
+ eval;$VERBOSE=if !false^l=<<"":0 end;U=%r~\A.\Z~;F=5;
3
+ self << '#'
4
+
5
+ ::Kernel.send :define_method, :method_missing do|*_|_<<self;_[0,1]=[];l,f=_.last,_.first;return _[0]if l==f;_.last.`(_.first).to_s end
6
+ O=Object;O=O;Object=O;%%% % %%%;class O;def
7
+ end (x=$x)($x=x).reverse end;def
8
+ end_(x=$x)($x=x).reverse_end;end end
9
+ alias r end;alias a r;alias e end_;public:`,:r,:require
10
+ self.`"a \'Ruby script obfuscated\'\x23 is not readable by anyone else."
11
+ r <<u<<"""#$x"
12
+ u
13
+ r[0]^=r[1]
14
+ $=||=0;$_||=0_0
15
+ i,v=['o',*local_variables].flatten.grep(/\A.\Z/).sort_by{|x|x[0].-(?j).abs.-@}.reverse,false
16
+ y=methods.grep(U).sort_by{|x|x[0].-(?e).abs.-@}
17
+ #breakpoint
18
+ i=[i,y].join(I=Love(%q=(2.**(5).chr)=)).gsub(' '){w=$=^=1;$x[w.inspect[1][0]*F-1,1]}.gsub(/[eyd]/){(?e.+?y.-($&[0])).chr }.delete('z')
19
+ i=i.scan(%r:#{I}|.*?(?=#{I})|.*:).inject([]){|r,p|unless(v=!v if(v=!v)...(v))..(v=!v):r<<[]end;r.last<<p;r};v^=!v
20
+ i,@v,@u=i.reject{true if (v=!v)..v}.join.capitalize,local_variables.inject(?X){|p,v|p^v[0]}.chr,O.constants.grep(U).pop
21
+ i=i.sub(/#@v/i, @v).sub(/#@u/i, @u).gsub!(/./, &proc {|x|$&[0].send(x=='A'? :succ : :to_i).chr}).sub!methods.grep(/^\W/).first do |x| (x[0]|F.to_s[0]).chr end
22
+ def i.<<(*);super duper('"\x%s"' % __LINE__)end
23
+ i<<='?'
24
+ puts i
data/testdata/g.rb ADDED
@@ -0,0 +1,15 @@
1
+ j=9;def i(n) [n ?"d" : "e" , n] end
2
+
3
+ #breakpoint
4
+ p(i ?")
5
+ p(j ?"d" : "e")
6
+
7
+ def g(x=nil) x end
8
+ def gg(x=nil) g x end
9
+ p(gg :x)
10
+ p(g :y)
11
+ g=9
12
+ p(gg :z)
13
+ # g :w #error
14
+
15
+
@@ -0,0 +1,18 @@
1
+
2
+ x, (*), z = [:x, :y, :z]
3
+ p x
4
+ p z
5
+
6
+ x, (*y), z = [:x, :y, :z]
7
+ p x
8
+ p y
9
+ p z
10
+
11
+ p($/ = ' '; Array( "i'm in your house" ))
12
+
13
+ class Foou
14
+ public
15
+ def [] x=-100,&y=nil; p x; 100 end
16
+ end
17
+ p Foou.new.[]?9 #value
18
+ p Foou.new.[] ?9 #value
@@ -0,0 +1 @@
1
+ exit
data/testdata/p.rb ADDED
@@ -0,0 +1,1227 @@
1
+ p true ?
2
+ 1 : 2
3
+ #breakpoint
4
+ module M555
5
+ def r;4 end
6
+ #breakpoint
7
+ r=r.nil? #2nd r seems like it should be MethNameToken, but is VarNameToken (for matz too)
8
+ #breakpoint
9
+ end
10
+ #breakpoint
11
+
12
+ p ?e.+?y
13
+ p ?e.+ ?y
14
+ p ?e.-?y
15
+ p ?e.*?y
16
+ p ?e./?y
17
+ p ?e.<<?y
18
+ p ?e.%?y
19
+ p ?e.**?y
20
+ p ?e.&?y
21
+
22
+ p %s/jim/;
23
+
24
+ p "#{<<foobar0.each('|'){|s| '\nthort: '+s} }"
25
+ jbvd|g4543ghb|!@G$dfsd|fafr|e
26
+ |s4e5rrwware|BBBBB|*&^(*&^>"PMK:njs;d|
27
+
28
+ foobar0
29
+
30
+
31
+ p 0.9
32
+ p 1.45000000000000000000000000000000000000001
33
+ p 9.999999999999999999999999999999999999999999
34
+ p 9.999999999999999999999999999999999999999999e999999999999999999999999999
35
+ p 0b0100011001
36
+ p 0o123456701
37
+ p 0123456701
38
+
39
+ p 0x123456789abcdefABCDEF01
40
+
41
+
42
+
43
+
44
+
45
+ p % foo
46
+ p % foo
47
+ p %
48
+ foo
49
+
50
+
51
+ p eval "%\sfoo\s"
52
+
53
+ p eval "%\tfoo\t"
54
+ p :p
55
+ p :p
56
+ p eval "%\vfoo\v"
57
+ p eval "%\rfoo\r"
58
+ p :p
59
+ p :p
60
+ p eval "%\nfoo\n"
61
+ p eval "%\0foo\0"
62
+
63
+ p eval "%\r\nfoo\r\n"
64
+ p eval "%\n\rfoo\n\r" #ruby get this wrong
65
+ p eval "%\n\rfoo\n" #this shouldn't work but does
66
+ p eval "%\r\nfoo\r" #this does not work,
67
+ p eval "%\r\nfoo\n" #this shouldn't work but does
68
+
69
+
70
+ p "Hi, my name is #{"Slim #{(4)>2?"Whitman":"Shady"} "}."
71
+ p "Hi, my name is #{"Slim #{(4)<2?"Whitman":"Shady"} "}."
72
+
73
+ #breakpoint
74
+
75
+ p(String *Class)
76
+ class String
77
+ class Class
78
+ end
79
+ end
80
+ #def String(x) x.to_s end #it's already built-in. duh!
81
+ def String.*(right) [self,right] end
82
+ def String.<<(right) [self,:<<,right] end
83
+ def String./(right) [self,:/,right] end
84
+ def String.[](right) [self,:[],right] end
85
+ p(String::Class)
86
+ p(String:: Class)
87
+ p(String ::Class)
88
+ p(String :: Class)
89
+ p(String<<Class)
90
+ p(String<< Class)
91
+ p(String <<Class)
92
+ sgsdfgf
93
+ Class
94
+ p(String << Class)
95
+ p(String/Class)
96
+ p(String/ Class)
97
+ p(String /Class/)
98
+ p(String / Class) #borken
99
+ p(String[Class])
100
+ p(String[ Class])
101
+ p(String [Class])
102
+ p(String [ Class])
103
+ p(String*Class)
104
+ p(String* Class)
105
+ p(String *Class)
106
+ p(String * Class)
107
+ class <<String
108
+ undef :*,<<,/,[]
109
+ end
110
+
111
+
112
+
113
+ p(false::to_s)
114
+ p(false ::to_s)
115
+ p(false:: to_s)
116
+ p(false :: to_s)
117
+ #breakpoint
118
+
119
+ class C2
120
+ class <<self
121
+ def self.p8; p 8 end
122
+ alias p? p
123
+ alias P? p
124
+ alias [] p
125
+ alias <=> p
126
+ end
127
+
128
+ q=9
129
+ Q=99
130
+
131
+ p:p8
132
+ false ? p: p8
133
+ p :p8
134
+ false ? p : p8
135
+
136
+ false ? q:p8
137
+ false ? q: p8
138
+ false ? q :p8
139
+ false ? q : p8
140
+
141
+ #false ? Q:p8 #gives ruby indigestion
142
+ false ? Q: p8
143
+ #false ? Q :p8 #gives ruby indigestion
144
+ false ? Q : p8
145
+
146
+ p?:p8
147
+ false ? p?: p8
148
+ p? :p8
149
+ false ? p? : p8
150
+
151
+ p??1
152
+ p? ?1
153
+ p(p?? 1 : 2)
154
+ p(p? ? 1 : 2)
155
+
156
+ P?:p8
157
+ false ? P?: p8
158
+ P? :p8
159
+ false ? P? : p8
160
+
161
+ P??1
162
+ P? ?1
163
+ p(P?? 1 : 2)
164
+ p(P? ? 1 : 2)
165
+
166
+ self.[]:p8
167
+ false ? self.[]: p8
168
+ self.[] :p8
169
+ false ? self.[] : p8
170
+
171
+ self.<=>:p8
172
+ false ? self.<=>: p8
173
+ self.<=> :p8
174
+ false ? self.<=> : p8
175
+
176
+ self <=>:p8
177
+ #false ? self <=>: p8 #gives ruby indigestion
178
+ self <=> :p8
179
+ #false ? self <=> : p8 #gives ruby indigestion
180
+ end
181
+ #breakpoint
182
+
183
+ p <<stuff+'foobar'.tr('j-l','d-f')
184
+ "more stuff"
185
+ 12345678
186
+ the quick brown fox jumped over the lazy dog
187
+ stuff
188
+
189
+
190
+ p <<p
191
+ sdfsfdf^^^^@@@
192
+ p
193
+ mix=nil
194
+ p / 5/mix
195
+ #breakpoint
196
+
197
+ module M33
198
+ #breakpoint
199
+ p="var:"
200
+ #breakpoint
201
+ Q="func:"
202
+ def Q.method_missing(name,*args)
203
+ self+name.to_s+(args.join' ')
204
+ end
205
+ def p.method_missing(name,*args)
206
+ self+name.to_s+(args.join' ')
207
+ end
208
+ def self.p(*a); super; Q end
209
+ @a=1
210
+ $a=2
211
+
212
+ p(p~6)
213
+ p(p ~6)
214
+ p(p~ 6)
215
+ p(p ~ 6)
216
+ p(p*11)
217
+ p(p *11)
218
+ p(p* 11)
219
+ p(p * 11)
220
+ p(p&proc{})
221
+ p(p &proc{})
222
+ p(p& proc{})
223
+ p(p & proc{})
224
+ p(p !1)
225
+ # p(p ?1) #compile error, when p is var
226
+ p(p ! 1)
227
+ p(p ? 1 : 6)
228
+ p(p@a)
229
+ p(p @a)
230
+ # p(p@ a) #wont
231
+ # p(p @ a) #work
232
+ p(p#a
233
+ )
234
+ p(p #a
235
+ )
236
+ p(p# a
237
+ )
238
+ p(p # a
239
+ )
240
+ p(p$a)
241
+ p(p $a)
242
+ # p(p$ a) #wont
243
+ # p(p $ a) #work
244
+ p(p%Q{:foo})
245
+ p(p %Q{:foo})
246
+ p(p% Q{:foo})
247
+ p(p % Q{:foo})
248
+ p(p^6)
249
+ p(p ^6)
250
+ p(p^ 6)
251
+ p(p ^ 6)
252
+ p(p&7)
253
+ p(p &proc{7})
254
+ p(p& 7)
255
+ p(p & 7)
256
+ p(p(2))
257
+ p(p (2))
258
+ p(p( 2))
259
+ p(p ( 2))
260
+ p(p(p))
261
+ p(p())
262
+ p(p (p))
263
+ p(p ())
264
+ p(p ( p))
265
+ p(p ( ))
266
+ p(p( p))
267
+ p(p( ))
268
+ p(p)
269
+ p((p))
270
+ p(p )
271
+ p((p ))
272
+ p((p p))
273
+ p((p p,p))
274
+ p((p p))
275
+ p((p p,p))
276
+ p(p-0)
277
+ p(p -0)
278
+ p(p- 0)
279
+ p(p - 0)
280
+ p(p+9)
281
+ p(p +9)
282
+ p(p+ 9)
283
+ p(p + 9)
284
+ p(p[1])
285
+ p(p [1])
286
+ p(p[ 1])
287
+ p(p [ 1])
288
+ p(p{1})
289
+ p(p {1})
290
+ p(p{ 1})
291
+ p(p { 1})
292
+ p(p/1)
293
+ p(p /22)
294
+ p(p/ 1)
295
+ p(p / 22)
296
+ p(p._)
297
+ p(p ._)
298
+ p(p. _)
299
+ p(p . _)
300
+ p(false ? p:f)
301
+ p(false ? p :f)
302
+ p(false ? p: f)
303
+ p(false ? p : f)
304
+ p((p;1))
305
+ p((p ;1))
306
+ p((p; 1))
307
+ p((p ; 1))
308
+ p(p<1)
309
+ p(p <1)
310
+ p(p< 1)
311
+ p(p < 1)
312
+ p(p<<1)
313
+ p(p <<1)
314
+ p(p<< 1)
315
+ p(p << 1)
316
+ p(p'j')
317
+ p(p 'j')
318
+ p(p' j')
319
+ p(p ' j')
320
+ p(p"k")
321
+ p(p "k")
322
+ p(p" k")
323
+ p(p " k")
324
+ p(p|4)
325
+ p(p |4)
326
+ p(p| 4)
327
+ p(p | 4)
328
+ p(p>2)
329
+ p(p >2)
330
+ p(p> 2)
331
+ p(p > 2)
332
+
333
+ #breakpoint
334
+ end
335
+
336
+ #breakpoint
337
+ module M34
338
+ p(p~6)
339
+ p(p ~6)
340
+ p(p~ 6)
341
+ p(p ~ 6)
342
+ p(p*[1])
343
+ p(p *[1])
344
+ p(p* [1])
345
+ p(p * [1])
346
+ p(p&proc{})
347
+ p(p &proc{})
348
+ p(p& proc{})
349
+ p(p & proc{})
350
+ p(p !1)
351
+ p(p ?1)
352
+ p(p ! 1)
353
+ p(p ? 1 : 6)
354
+ p(p@a)
355
+ p(p @a)
356
+ # p(p@ a) #wont
357
+ # p(p @ a) #work
358
+
359
+ p(p#a
360
+ )
361
+ p(p #a
362
+ )
363
+ p(p# a
364
+ )
365
+ p(p # a
366
+ )
367
+ p(p$a)
368
+ p(p $a)
369
+ # p(p$ a) #wont
370
+ # p(p $ a) #work
371
+ p(p%Q{:foo})
372
+ p(p %Q{:foo})
373
+ p(p% Q{:foo})
374
+ p(p % Q{:foo})
375
+ p(p^6)
376
+ p(p ^6)
377
+ p(p^ 6)
378
+ p(p ^ 6)
379
+ p(p&7)
380
+ p(p &proc{7})
381
+ p(p& 7)
382
+ p(p & 7)
383
+ p(p(2))
384
+ p(p (2))
385
+ p(p( 2))
386
+ p(p ( 2))
387
+ p(p(p))
388
+ p(p())
389
+ p(p (p))
390
+ p(p ())
391
+ p(p ( p))
392
+ p(p ( ))
393
+ p(p( p))
394
+ p(p( ))
395
+ p(p)
396
+ p((p))
397
+ p(p )
398
+ p((p ))
399
+ p((p p))
400
+ p((p p,p))
401
+ p((p p))
402
+ p((p p,p))
403
+ p(p-0)
404
+ p(p -1)
405
+ p(p- 0)
406
+ p(p - 0)
407
+ p(p+9)
408
+ p(p +9)
409
+ p(p+ 9)
410
+ p(p + 9)
411
+ p(p[1])
412
+ p(p [1])
413
+ p(p[ 1])
414
+ p(p [ 1])
415
+ p(p{1})
416
+ p(p {1})
417
+ p(p{ 1})
418
+ p(p { 1})
419
+ p(p/1)
420
+ p(p /22/)
421
+ p(p/ 1)
422
+ p(p / 22)
423
+ p(p._)
424
+ p(p ._)
425
+ p(p. _)
426
+ p(p . _)
427
+ p(p:f)
428
+ p(p :f)
429
+ p(false ? p: f)
430
+ p(false ? p : f)
431
+ p((p;1))
432
+ p((p ;1))
433
+ p((p; 1))
434
+ p((p ; 1))
435
+ p(p<1)
436
+ p(p <1)
437
+ p(p< 1)
438
+ p(p < 1)
439
+ p(p<<1)
440
+ p(p <<1)
441
+ foobar
442
+ 1
443
+ p(p<< 1)
444
+ p(p << 1)
445
+ p(p'j')
446
+ p(p 'j')
447
+ p(p' j')
448
+ p(p ' j')
449
+ p(p"k")
450
+ p(p "k")
451
+ p(p" k")
452
+ p(p " k")
453
+ p(p|4)
454
+ p(p |4)
455
+ p(p| 4)
456
+ p(p | 4)
457
+ p(p>2)
458
+ p(p >2)
459
+ p(p> 2)
460
+ p(p > 2)
461
+
462
+ end
463
+
464
+
465
+ def bob(x) x end
466
+ def bill(x) x end
467
+ p(bob %(22))
468
+ for bob in [100] do p(bob %(22)) end
469
+ p(bob %(22))
470
+ def %(n) to_s+"%#{n}" end
471
+ p(bill %(22))
472
+ begin sdjkfsjkdfsd; rescue Object => bill; p(bill %(22)) end
473
+ p(bill %(22))
474
+ undef %
475
+
476
+ class Object
477
+
478
+ public :`
479
+ def `(s)
480
+ print "bq: #{s}\n"
481
+ end
482
+ end
483
+
484
+ 69.`('what a world')
485
+
486
+ 79::`('what a word')
487
+
488
+ p :`
489
+
490
+ p{}
491
+ p {}
492
+ a=5
493
+ p p +5
494
+ p a +5
495
+
496
+ def nil.+(x) ~x end
497
+ def nil.[](*x) [x] end
498
+ p( p + 5 )
499
+ p( p +5 )
500
+ p( p+5 )
501
+ p( p[] )
502
+ p( p [] )
503
+ p( p [ ] )
504
+ class NilClass; undef +,[] end
505
+
506
+ class Foou
507
+ public
508
+ def [] x=-100,&y; p x; 100 end
509
+ end
510
+ a0=8
511
+ p Foou.new.[]!false #value
512
+ p Foou.new.[] !false #value
513
+ p Foou.new.[]~9 #value
514
+ p Foou.new.[] ~9 #value
515
+ p Foou.new.[]-9 #op
516
+ p Foou.new.[]+9 #op
517
+ p Foou.new.[] -9 #value
518
+ p Foou.new.[] +9 #value
519
+ p Foou.new.[]<<9 #op
520
+ p Foou.new.[] <<9 #value
521
+ foobar
522
+ 9
523
+ p Foou.new.[]%9 #op
524
+ p Foou.new.[]/9 #op
525
+ p Foou.new.[] %(9) #value
526
+ p Foou.new.[] /9/ #value
527
+ p Foou.new.[]$9 #value
528
+ p Foou.new.[]a0 #value
529
+ p Foou.new.[] $9 #value
530
+ p Foou.new.[] a0 #value
531
+ p Foou.new.[]{9} #lambda (op)
532
+ p Foou.new.[] {9} #lambda (op)
533
+
534
+ if p then p end
535
+
536
+ p({:foo=>:bar}) #why does this work? i'd think that ':foo=' would be 1 token
537
+ p EMPTY = 0
538
+ p BLACK = 1
539
+ p WHITE = - BLACK
540
+
541
+ a=b=c=0
542
+ a ? b:c
543
+ a ?b:c
544
+
545
+ p(a ? b:c)
546
+ p(a ?b:c)
547
+
548
+
549
+ p~4
550
+ p:f
551
+ p(~4){}
552
+ p(:f){}
553
+ h={}
554
+ h.default=:foo
555
+
556
+ p def (h="foobar").default= v; p @v=v;v end
557
+ p h
558
+
559
+ p h.default=:b
560
+
561
+ x, (*y) = [:x, :y, :z]
562
+ p x
563
+ p y
564
+
565
+ x, *y = [:x, :y, :z]
566
+ p x
567
+ p y
568
+
569
+ x, * = [:x, :y, :z]
570
+ p x
571
+
572
+
573
+
574
+ p Array("foo\nbar")
575
+
576
+
577
+
578
+ p +(4)
579
+ p -(4)
580
+
581
+ p :'\\'
582
+
583
+ class Foop
584
+ def Foop.bar a,b
585
+ p a,b
586
+ end
587
+ end
588
+ Foop.bar 1,2
589
+ Foop::bar 3,4
590
+
591
+
592
+ class Foop
593
+ def Foop::baz a,b
594
+ p :baz,a,b
595
+ end
596
+ end
597
+ Foop.baz 5,6
598
+ Foop::baz 7,8
599
+
600
+
601
+
602
+ without_creating=widgetname=nil
603
+ if without_creating && !widgetname #foo
604
+ fail ArgumentError,
605
+ "if set 'without_creating' to true, need to define 'widgetname'"
606
+ end
607
+
608
+
609
+
610
+ =begin disable for now
611
+
612
+ #class, module, and def should temporarily hide local variables
613
+ def mopsdfjskdf arg; arg*2 end
614
+ mopsdfjskdf=5
615
+ class C
616
+ p mopsdfjskdf %(3) #calls method
617
+ end
618
+
619
+ module M
620
+ p mopsdfjskdf %(4) #calls method
621
+ end
622
+
623
+ def d
624
+ p mopsdfjskdf %(5) #calls method
625
+ end
626
+ p d
627
+ p mopsdfjskdf %(6) #reads variable
628
+ p proc{mopsdfjskdf %(7)}[] #reads variable
629
+
630
+ #fancy symbols not supported yet
631
+ p %s{symbol}
632
+ =end
633
+
634
+ #multiple assignment test
635
+ proc {
636
+ a,b,c,d,e,f,g,h,i,j,k=1,2,3,4,5,6,7,8,9,10,11
637
+ p(b %(c))
638
+ p(a %(c))
639
+ p(k %(c))
640
+ p(p %(c))
641
+ }.call
642
+
643
+
644
+ =begin disable for now
645
+ p "#{<<kekerz}#{"foob"
646
+ zimpler
647
+ kekerz
648
+ }"
649
+
650
+
651
+ aaa=<<whatnot; p "#{'uh,yeah'
652
+ gonna take it down, to the nitty-grit
653
+ gonna tell you mother-fuckers why you ain't shit
654
+ cause suckers like you just make me strong
655
+ you been pumpin' that bullshit all day long
656
+ whatnot
657
+ }"
658
+ p aaa
659
+
660
+ #test variable creation in string inclusion
661
+ #currently broken because string inclusions
662
+ #are lexed by a separate lexer!
663
+ proc {
664
+ p "jentawz: #{baz=200}"
665
+ p( baz %(9))
666
+ }.call
667
+ =end
668
+
669
+ =begin ought to work...ruby doesn't like
670
+ class A
671
+ class B
672
+ class C
673
+ end
674
+ end
675
+ end
676
+ def A::B::C::d() :abcd end
677
+ def A::B::d() :abd end #this used to work as well... i think
678
+
679
+
680
+ p :$1
681
+ p :$98349576875974523789734582394578
682
+
683
+ def nil.d=; end #this works
684
+ def (;).d=; end
685
+ def ().d=; end
686
+ p def (p h="foobar";).default= v; p @v=v;v end
687
+ p def (p h="foobar";h).default= v; p @v=v;v end
688
+
689
+ p~4{}
690
+ p:f{}
691
+ p ~4{}
692
+ p :f{}
693
+
694
+ def g a=:g; [a] end
695
+ g g g #this works
696
+ g *g #this works
697
+ g *g g #this doesn't
698
+
699
+ [nil,p 5]
700
+ "foo"+[1].join' '
701
+
702
+ class Fook
703
+ def foo; end
704
+
705
+ file.===/#/ #syntax error
706
+
707
+ file.=== /#/ #no error
708
+ file===// #no error
709
+
710
+ #these work:
711
+ (not true)
712
+ p(!true) #etc
713
+ (true if false) #etc
714
+ (true and false) #etc
715
+ (undef foo)
716
+ (alias bar foo)
717
+ (BEGIN{p :yyy})
718
+
719
+ #these don't:
720
+ p(not true)
721
+ p(true if false) #etc
722
+ p(true and false) #etc
723
+ p(undef foo)
724
+ p(alias bar foo)
725
+ p(BEGIN{p :yyy})
726
+ end
727
+
728
+ =end
729
+
730
+ proc {
731
+ }
732
+
733
+ p "#{<<foobar3}"
734
+ bim
735
+ baz
736
+ bof
737
+ foobar3
738
+
739
+ def func
740
+ a,b,* = [1,2,3,4,5,6,7,8]
741
+ p a,b
742
+ a,b, = [1,2,3,4,5,6,7,8]
743
+ p a,b
744
+
745
+ a,b = [1,2,3,4,5,6,7,8]
746
+ p a,b
747
+ a,*b = [1,2,3,4,5,6,7,8]
748
+ p a,b
749
+
750
+ a,b,*c=[1,2,3,4,5,6,7,8]
751
+ a,b,* c=[1,2,3,4,5,6,7,8]
752
+ end
753
+ func
754
+
755
+
756
+ p( %r{\/$})
757
+ p( %r~<!include:([\/\w\.\-]+)>~m)
758
+
759
+ p <<end
760
+ #{compile_body}\
761
+ #{outvar}
762
+ end
763
+
764
+
765
+
766
+
767
+
768
+ proc {
769
+ h={:a=>(foo=100)}
770
+ p( foo %(5))
771
+ }.call
772
+
773
+
774
+ p "#{<<foobar3}"
775
+ bim
776
+ baz
777
+ bof
778
+ foobar3
779
+
780
+ p "#{<<foobar2
781
+ bim
782
+ baz
783
+ bof
784
+ foobar2
785
+ }"
786
+
787
+
788
+
789
+ p <<one ; p "#{<<two}"
790
+ 1111111111111111
791
+ fdsgdfgdsfffff
792
+ one
793
+ 2222222222222222
794
+ sdfasdfasdfads
795
+ two
796
+
797
+ p "#{<<foobar1.each('|'){|s| '\nthort: '+s}
798
+ jbvd|g4543ghb|!@G$dfsd|fafr|e
799
+ |s4e5rrwware|BBBBB|*&^(*&^>"PMK:njs;d|
800
+
801
+ foobar1
802
+ }"
803
+
804
+
805
+ def foo(a=<<a,b=<<b,c=<<c)
806
+ jfksdkjf
807
+ dkljjkf
808
+ a
809
+ kdljfjkdg
810
+ dfglkdfkgjdf
811
+ dkf
812
+ b
813
+ lkdffdjksadhf
814
+ sdflkdjgsfdkjgsdg
815
+ dsfg;lkdflisgffd
816
+ g
817
+ c
818
+
819
+ a+b+c
820
+
821
+ end
822
+
823
+ p foo
824
+
825
+
826
+
827
+
828
+ $a=1
829
+ @b=2
830
+ @@c=3
831
+ p "#$a #@b #@@c #{$a+@b+@@c}"
832
+ p "\#$a \#@b \#@@c \#{$a+@b+@@c}"
833
+ p '#$a #@b #@@c #{$a+@b+@@c}'
834
+ p '\#$a \#@b \#@@c \#{$a+@b+@@c}'
835
+ p %w"#$a #@b #@@c #{$a+@b+@@c}"
836
+ p %w"\#$a \#@b \#@@c \#{$a+@b+@@c}"
837
+ p %W"#$a #@b #@@c #{$a+@b+@@c}"
838
+ p %W"\#$a \#@b \#@@c \#{$a+@b+@@c}"
839
+ p %Q[#$a #@b #@@c #{$a+@b+@@c}]
840
+ p %Q[\#$a \#@b \#@@c \#{$a+@b+@@c}]
841
+ p `echo #$a #@b #@@c #{$a+@b+@@c}`
842
+ p `echo \#$a \#@b \#@@c \#{$a+@b+@@c}`
843
+ p(/#$a #@b #@@c #{$a+@b+@@c}/)
844
+ #p(/\#$a \#@b \#@@c \#{$a+@b+@@c}/) #moved to w.rb
845
+
846
+
847
+ class AA; class BB; class CC
848
+ FFOO=1
849
+ end end end
850
+
851
+ p AA::BB::CC::FFOO
852
+
853
+ compile_body=outvar='foob'
854
+
855
+ if false
856
+ method_src = c.compile(template, (HtmlCompiler::AnyData.new)).join("\n") +
857
+ "\n# generated by PartsTemplate::compile_partstemplate at #{Time.new}\n"
858
+ rescu -1
859
+ end
860
+
861
+ p('rb_out', 'args', <<-'EOL')
862
+ regsub -all {!} $args {\\!} args
863
+ regsub -all "{" $args "\\{" args
864
+ if {[set st [catch {ruby [format "TkCore.callback %%Q!%s!" $args]} ret]] != 0} {
865
+ return -code $st $ret
866
+ } {
867
+ return $ret
868
+ }
869
+ EOL
870
+
871
+
872
+ def add(*args)
873
+ self.<<(*args)
874
+ end
875
+
876
+
877
+
878
+ val=%[13,17,22,"hike", ?\s]
879
+ if val.include? ?\s
880
+ p val.split.collect{|v| (v)}
881
+ end
882
+ p "#{}"
883
+ p "#(1)"
884
+ class Hosts
885
+ end
886
+ class DNS < Hosts
887
+ end
888
+ def intialize(resolvers=[Hosts.new, DNS.new]) end
889
+ def environment(env = File.basename($0, '.*')) end
890
+
891
+ def ssssss &block
892
+ end
893
+ def params_quoted(field_name, default)
894
+ if block_given? then yield field_name else default end
895
+ end
896
+ def ==(o) 444 end
897
+ def String.ffff4() self.to_s+"ffff" end
898
+
899
+ p *[]
900
+ for i in \
901
+ [44,55,66,77,88] do p i**Math.sqrt(i) end
902
+
903
+
904
+ #(
905
+ for i in if
906
+ false then foob12345; else [44,55,66,77,88] end do p i**Math.sqrt(i) end
907
+ #)
908
+ (
909
+ for i in if false then
910
+ foob12345; else [44,55,66,77,88] end do p i**Math.sqrt(i) end
911
+
912
+ c=j=0
913
+ until while j<10 do j+=1 end.nil? do p 'pppppppppp' end
914
+ for i in if false then foob12345;
915
+ else [44,55,66,77,88] end do p i**Math.sqrt(i) end
916
+
917
+ for i in if false then foob12345; else
918
+ [44,55,66,77,88] end do p i**Math.sqrt(i) end
919
+
920
+
921
+ for i in (c;
922
+ [44,55,66,77,88]) do p i**Math.sqrt(i) end
923
+ )
924
+ (
925
+
926
+ for i in (begin
927
+ [44,55,66,77,88] end) do p i**Math.sqrt(i) end
928
+
929
+ for i in if false then foob12345; else
930
+ [44,55,66,77,88] end do p i**Math.sqrt(i) end
931
+
932
+ for i in (
933
+
934
+ [44,55,66,77,88]) do p i**Math.sqrt(i) end
935
+
936
+ for i in (
937
+ [44,55,66,77,88]) do p i**Math.sqrt(i) end
938
+
939
+ )
940
+
941
+
942
+
943
+ def yy;yield end
944
+
945
+ block=proc{p "blah blah"}
946
+
947
+ yy &block
948
+ p(1.+1)
949
+ p pppp
950
+
951
+ module M66
952
+ p(proc do
953
+ p=123
954
+ end.call)
955
+
956
+ p proc {
957
+ p=123
958
+ }.call
959
+
960
+ p def pppp
961
+ p=123
962
+ end
963
+ p module Ppp
964
+ p=123
965
+ end
966
+ p class Pppp < String
967
+ p=123
968
+ end
969
+ end
970
+
971
+ def _make_regex(str) /([#{Regexp.escape(str)}])/n end
972
+ p _make_regex("8smdf,34rh\#@\#$%$gfm/[]dD")
973
+
974
+
975
+ p "#$a #@b #@@c
976
+
977
+ d e f
978
+ #$a #@b #@@c
979
+ "
980
+
981
+ p "\""
982
+
983
+ a=a.to_s
984
+ class <<a
985
+ def foobar
986
+ self*101
987
+ end
988
+ alias eql? ==
989
+ end
990
+
991
+ p a.foobar
992
+
993
+
994
+ p(/^\s*(([+-\/*&\|^]|<<|>>|\|\||\&\&)=|\&\&|\|\|)/)
995
+ p(:%)
996
+ p( { :class => class_=0})
997
+ p cls_name = {}[:class]
998
+
999
+
1000
+ p foo
1001
+ p "#{$!.class}"
1002
+ p :p
1003
+ p(:p)
1004
+ p(:"[]")
1005
+ p :"[]"
1006
+ p("\\")
1007
+ p(/\\/)
1008
+ p(/[\\]/)
1009
+ p 0x80
1010
+ p ?p
1011
+ p 0.1
1012
+ p 0.8
1013
+ p 0.9
1014
+ p(-1)
1015
+ p %/p/
1016
+ p %Q[<LI>]
1017
+ i=99
1018
+ p %Q[<LI><A HREF="#{i[3]}.html\##{i[4]}">#{i[0]+i[1]+(i[2])}</A>\n]
1019
+ p(:side=>:top)
1020
+ p %w[a b c
1021
+ d e f]
1022
+ p %w[a b c\n
1023
+ d e f]
1024
+ p %w[\\]
1025
+ p %w[\]]
1026
+ p :+
1027
+ p 99 / 3
1028
+
1029
+ a=99;b=3
1030
+ p 1+(a / b)
1031
+ p %Q[\"]
1032
+ p %Q[ some [nested] text]
1033
+
1034
+
1035
+ if false
1036
+ formatter.format_element(element) do
1037
+ amrita_expand_and_format1(element, context, formatter)
1038
+ end
1039
+ end
1040
+ if false
1041
+ ret = <<-END
1042
+ @@parts_template = #{template.to_ruby}
1043
+ def parts_template
1044
+ @@parts_template
1045
+ end
1046
+
1047
+ #{c.const_def_src.join("\n")}
1048
+ def amrita_expand_and_format(element, context, formatter)
1049
+ if element.tagname_symbol == :span and element.attrs.size == 0
1050
+ amrita_expand_and_format1(element, context, formatter)
1051
+ else
1052
+ formatter.format_element(element) do
1053
+ amrita_expand_and_format1(element, context, formatter)
1054
+ end
1055
+ end
1056
+ end
1057
+
1058
+ def amrita_expand_and_format1(element, context, formatter)
1059
+ #{method_src}
1060
+ end
1061
+ END
1062
+ j=55
1063
+ end
1064
+
1065
+ p '
1066
+ '
1067
+ p '\n'
1068
+ p "
1069
+ "
1070
+ p "\n"
1071
+ p %w/
1072
+ /
1073
+ p %w/\n/
1074
+
1075
+ p %W/
1076
+ /
1077
+ p %W/\n/
1078
+ p(/
1079
+ /)
1080
+ p(/\n/)
1081
+ p proc {
1082
+ p `
1083
+ `
1084
+ p `\n`
1085
+ }
1086
+
1087
+
1088
+
1089
+ p(%r[foo]i)
1090
+ p <<stuff+'foobar'.tr('j-l','d-f')
1091
+ "more stuff"
1092
+ 12345678
1093
+ the quick brown fox jumped over the lazy dog
1094
+ stuff
1095
+
1096
+ =begin doesn't work
1097
+ p <<stuff+'foobar'.tr('j-l','d-f')\
1098
+ +"more stuff"
1099
+ 12345678
1100
+ the quick brown fox jumped over the lazy dog
1101
+ stuff
1102
+ =end
1103
+
1104
+ p ENV["AmritaCacheDir"]
1105
+ p <<-BEGIN + <<-END
1106
+ def element_downcase(attributes = {})
1107
+ BEGIN
1108
+ end
1109
+ END
1110
+
1111
+
1112
+
1113
+ p <<ggg; def
1114
+ kleegarts() p 'kkkkkkk' end
1115
+ dfgdgfdf
1116
+ ggg
1117
+ koomblatz!() p 'jdkfsk' end
1118
+
1119
+ koomblatz!
1120
+
1121
+ p f = 3.7517675036461267e+17
1122
+ p $10
1123
+ p $1001
1124
+ p( <<end )
1125
+ nine time nine men have stood untold.
1126
+ end
1127
+
1128
+ def jd_to_wday(jd) (jd + 1) % 7 end
1129
+ p jd_to_wday(98)
1130
+
1131
+
1132
+ p pre = $`
1133
+ =begin
1134
+ =end
1135
+
1136
+ p <<"..end .."
1137
+ cbkvjb
1138
+ vb;lkxcvkbxc
1139
+ vxlc;kblxckvb
1140
+ xcvblcvb
1141
+ ..end ..
1142
+
1143
+ p $-j=55
1144
+
1145
+ def empty() end
1146
+
1147
+ p <<a
1148
+ dkflg
1149
+ flk
1150
+ a
1151
+
1152
+ label='label';tab=[1,2,3]
1153
+ p <<S
1154
+ #{label} = arr = Array.new(#{tab.size}, nil)
1155
+ str = a = i = nil
1156
+ idx = 0
1157
+ clist.each do |str|
1158
+ str.split(',', -1).each do |i|
1159
+ arr[idx] = i.to_i unless i.empty?
1160
+ idx += 1
1161
+ end
1162
+ end
1163
+
1164
+ S
1165
+ def printem1 a,b,c
1166
+ p(a +77)
1167
+ p(b +77)
1168
+ p(c +77)
1169
+ end
1170
+
1171
+ def foobar() end
1172
+ def foobar2
1173
+ end
1174
+
1175
+ def printem0(a)
1176
+ p(a +77)
1177
+ end
1178
+ def printem0(a,b,c)
1179
+ p(a +77)
1180
+ p(b +77)
1181
+ p(c +77)
1182
+ end
1183
+ def printem2 a,b,c; p(a +77); p(b +77); p(c +77) end
1184
+ def three() (1+2) end
1185
+
1186
+ def d;end
1187
+ def d()end
1188
+ def d(dd)end
1189
+
1190
+ def printem a,b,c
1191
+ p a;p b;p c
1192
+ p(a +77)
1193
+ p(b %(0.123))
1194
+ end
1195
+ printem 1,2,3
1196
+
1197
+ a=1
1198
+ p(a +77)
1199
+
1200
+ def hhh(a=(1+2)) a end
1201
+
1202
+
1203
+
1204
+ END {
1205
+ p "bye-bye"
1206
+ }
1207
+
1208
+
1209
+ p <<here
1210
+ where?
1211
+ here
1212
+ p <<-what
1213
+ ? that's
1214
+ what
1215
+ p proc{||}
1216
+ for i in if false
1217
+ foob12345; else [44,55,66,77,88] end do p i**Math.sqrt(i) end
1218
+ p "\v"
1219
+ c=0
1220
+ while c == /[ \t\f\r\13]/; end
1221
+
1222
+
1223
+
1224
+
1225
+
1226
+
1227
+