ruby2ruby 2.4.4 → 2.5.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e0a68c49fb78276f0904646fd04f48042d124b765d63cca627967c5f36d232ad
4
- data.tar.gz: 397b684e0d7a1d64b0ec2cc9a9c6419340021d7000302f72524d1af075cc63ea
3
+ metadata.gz: ce3916335beb18e635634b93a85be8c88aaaab6029aea5ba5426b429cebbb2a6
4
+ data.tar.gz: e443e89cd7216bee0ae5d2fc8b182cafb94827357cb82d2b248cb19e2a26b6bd
5
5
  SHA512:
6
- metadata.gz: a39d237921b8aa506673f3efb48c4c0cf570ad36eca10399eef3e0a89261eb6cc65f87f4023793f61a64b3db1b73c935ba24b0cbb0a9c5d6aa394a5c6ee94863
7
- data.tar.gz: 8a3fd4b2479cc4bdb89e420f6a4173c1e30719456bc3f3b53b9828bbc243fcc65d8fbd922ac5a9516a862d2059e16c19517020fca925b730b3bbccec4eb6e1cf
6
+ metadata.gz: 62655af018fce2402bb410d7606afb34f7a6f332c88fc74aca6ebf9faf5f37abd23d9827cfd5d5742d3240d89ae838f4ef7d28f92da7bc520c335467b89a448a
7
+ data.tar.gz: 637c87a736b4da72487c95bc8fa981d49ba9b57e3e8f48c2013ef52bbbcb09176c0abfae18b272cba551adcb5961bcad6e94fa38dee8352f154986861cf7e616
checksums.yaml.gz.sig CHANGED
Binary file
data/History.rdoc CHANGED
@@ -1,3 +1,25 @@
1
+ === 2.5.1 / 2024-07-08
2
+
3
+ * 1 bug fix:
4
+
5
+ * Fix errors created when string literals are frozen. (byroot + zenspider)
6
+
7
+ === 2.5.0 / 2022-10-04
8
+
9
+ * 5 minor enhancements:
10
+
11
+ * Added support for (most?) pattern matching.
12
+ * Added support for **kwrest.
13
+ * Added support for forward args (...), defn and call.
14
+ * Added support for preexe (BEGIN { ... }).
15
+ * Support ruby 3.1 hash shorthand syntax. (presidentbeef)
16
+
17
+ * 3 bug fixes:
18
+
19
+ * Fix generation of case w/ no else.
20
+ * Fixed a bug block shadow vars (they're grouped)
21
+ * Fixed find_pat up (after fixing a find_pat bug in ruby_parser).
22
+
1
23
  === 2.4.4 / 2019-09-24
2
24
 
3
25
  * 1 bug fix:
data/Rakefile CHANGED
@@ -79,6 +79,24 @@ task :debug => :isolate do
79
79
  puts process(ruby, file)
80
80
  end
81
81
 
82
+ task :parse => :isolate do
83
+ require "ruby_parser"
84
+ require "pp"
85
+
86
+ parser = RubyParser.for_current_ruby
87
+
88
+ file = ENV["F"]
89
+ ruby = ENV["R"]
90
+
91
+ if ruby then
92
+ file = "env"
93
+ else
94
+ ruby = File.read file
95
+ end
96
+
97
+ pp parser.process(ruby, file)
98
+ end
99
+
82
100
  task :bugs do
83
101
  sh "for f in bug*.rb ; do #{Gem.ruby} -S rake debug F=$f && rm $f ; done"
84
102
  end
data/lib/ruby2ruby.rb CHANGED
@@ -31,7 +31,7 @@ end
31
31
  # Generate ruby code from a sexp.
32
32
 
33
33
  class Ruby2Ruby < SexpProcessor
34
- VERSION = "2.4.4" # :nodoc:
34
+ VERSION = "2.5.1" # :nodoc:
35
35
 
36
36
  # cutoff for one-liners
37
37
  LINE_LENGTH = 78
@@ -134,8 +134,10 @@ class Ruby2Ruby < SexpProcessor
134
134
  _, k, v = arg
135
135
  "#{k}: #{process v}"
136
136
  when :shadow then
137
- shadow << arg[1]
137
+ shadow << arg.sexp_body
138
138
  next
139
+ when :forward_args then
140
+ "..."
139
141
  else
140
142
  raise "unknown arg type #{arg.first.inspect}"
141
143
  end
@@ -322,9 +324,10 @@ class Ruby2Ruby < SexpProcessor
322
324
  end
323
325
 
324
326
  result.concat rest.map { |pt|
325
- if pt and pt.sexp_type == :when
327
+ if pt and %i[when in].include? pt.sexp_type
326
328
  "#{process pt}"
327
329
  else
330
+ next unless pt
328
331
  code = indent process pt
329
332
  code = indent("# do nothing") if code =~ /^\s*$/
330
333
  "else\n#{code}"
@@ -333,7 +336,7 @@ class Ruby2Ruby < SexpProcessor
333
336
 
334
337
  result << "end"
335
338
 
336
- result.join "\n"
339
+ result.compact.join "\n"
337
340
  end
338
341
 
339
342
  def process_cdecl exp # :nodoc:
@@ -366,13 +369,26 @@ class Ruby2Ruby < SexpProcessor
366
369
  def process_const exp # :nodoc:
367
370
  _, name = exp
368
371
 
372
+ name = process name if Sexp === name
373
+
369
374
  name.to_s
370
375
  end
371
376
 
377
+ def __var name
378
+ case context[1]
379
+ when /_pat$/ then
380
+ "^#{name}"
381
+ when :in then
382
+ "^#{name}"
383
+ else
384
+ name.to_s
385
+ end
386
+ end
387
+
372
388
  def process_cvar exp # :nodoc:
373
389
  _, name = exp
374
390
 
375
- name.to_s
391
+ __var name
376
392
  end
377
393
 
378
394
  def process_cvasgn exp # :nodoc:
@@ -459,7 +475,7 @@ class Ruby2Ruby < SexpProcessor
459
475
 
460
476
  options = re_opt rest.pop if Integer === rest.last
461
477
 
462
- "/" << util_dthing(:dregx, s(:dregx, str, *rest)) << "/#{options}"
478
+ "/" + util_dthing(:dregx, s(:dregx, str, *rest)) << "/#{options}"
463
479
  end
464
480
 
465
481
  def process_dregx_once(exp) # :nodoc:
@@ -486,7 +502,7 @@ class Ruby2Ruby < SexpProcessor
486
502
  ens = process(ens) || "# do nothing"
487
503
  ens = "begin\n#{ens}\nend\n" if ens =~ /(^|\n)rescue/
488
504
 
489
- body.sub!(/\n\s*end\z/, "")
505
+ body = body.sub(/\n\s*end\z/, "")
490
506
  body = indent(body) unless body =~ /(^|\n)rescue/
491
507
 
492
508
  "#{body}\nensure\n#{indent ens}"
@@ -528,6 +544,10 @@ class Ruby2Ruby < SexpProcessor
528
544
  result.join "\n"
529
545
  end
530
546
 
547
+ def process_forward_args exp
548
+ "..."
549
+ end
550
+
531
551
  def process_gasgn exp # :nodoc:
532
552
  process_iasgn exp
533
553
  end
@@ -535,7 +555,7 @@ class Ruby2Ruby < SexpProcessor
535
555
  def process_gvar exp # :nodoc:
536
556
  _, name = exp
537
557
 
538
- name.to_s
558
+ __var name
539
559
  end
540
560
 
541
561
  def process_hash(exp) # :nodoc:
@@ -544,6 +564,13 @@ class Ruby2Ruby < SexpProcessor
544
564
  result = pairs.each_slice(2).map { |k, v|
545
565
  if k.sexp_type == :kwsplat then
546
566
  "%s" % process(k)
567
+ elsif v.nil?
568
+ # Shorthand hash syntax
569
+ unless k.sexp_type == :lit and k.value.is_a? Symbol
570
+ raise "Expected symbol for hash key, but got #{k.inspect}"
571
+ end
572
+
573
+ "#{k.value}:"
547
574
  else
548
575
  t = v.sexp_type
549
576
 
@@ -568,6 +595,89 @@ class Ruby2Ruby < SexpProcessor
568
595
  end
569
596
  end
570
597
 
598
+ def process_in exp # :nodoc:
599
+ _, lhs, *rhs = exp
600
+
601
+ cond = process lhs
602
+ body = rhs.compact.map { |sexp| indent process sexp }
603
+
604
+ body << indent("# do nothing") if body.empty?
605
+ body = body.join "\n"
606
+
607
+ "in #{cond} then\n#{body.chomp}"
608
+ end
609
+
610
+ def process_find_pat exp # :nodoc:
611
+ _, a, b, *c, d = exp
612
+
613
+ a = process a # might be nil
614
+ b = process b if Sexp === b
615
+ c = c.map { |sexp| process sexp }.join(", ")
616
+ d = process d if Sexp === d
617
+
618
+ "%s[%s, %s, %s]" % [a, b, c, d]
619
+ end
620
+
621
+ def process_array_pat exp # :nodoc:
622
+ _, const, *rest = exp
623
+
624
+ const = process const if const
625
+
626
+ rest = rest.map { |sexp|
627
+ case sexp
628
+ when Sexp
629
+ process sexp
630
+ else
631
+ sexp
632
+ end
633
+ }
634
+
635
+ "%s[%s]" % [const, rest.join(", ")]
636
+ end
637
+
638
+ def process_kwrest exp # :nodoc:
639
+ _, name = exp
640
+
641
+ name.to_s
642
+ end
643
+
644
+ def process_hash_pat exp # :nodoc:
645
+ _, const, *rest = exp
646
+
647
+ if const then
648
+ const = process const
649
+ kwrest = process rest.pop if rest.last && rest.last.sexp_type == :kwrest
650
+
651
+ rest = rest.each_slice(2).map { |k, v|
652
+ k = process(k).delete_prefix ":"
653
+ v = process v
654
+
655
+ "#{k}: #{v}".strip
656
+ }
657
+
658
+ rest << kwrest if kwrest
659
+
660
+ rest.empty? ? "%s[]" % const : "%s[%s]" % [const, rest.join(", ")]
661
+ else
662
+ kwrest = process rest.pop if rest.last && rest.last.sexp_type == :kwrest
663
+
664
+ rest = rest.each_slice(2).map { |k, v|
665
+ k = process(k).delete_prefix ":"
666
+ v = process v
667
+
668
+ "#{k}: #{v}".strip
669
+ }
670
+
671
+ rest << kwrest if kwrest
672
+
673
+ rest.empty? ? "{}" : "{ %s }" % [rest.join(", ")]
674
+ end
675
+ end
676
+
677
+ def process_preexe exp # :nodoc:
678
+ "BEGIN"
679
+ end
680
+
571
681
  def process_if(exp) # :nodoc:
572
682
  _, c, t, f = exp
573
683
 
@@ -589,11 +699,12 @@ class Ruby2Ruby < SexpProcessor
589
699
  return r if r and (@indent + r).size < LINE_LENGTH and r !~ /\n/
590
700
  end
591
701
 
592
- r = "if #{c} then\n#{indent(t)}\n"
702
+ r = []
703
+ r << "if #{c} then\n#{indent(t)}\n"
593
704
  r << "else\n#{indent(f)}\n" if f
594
705
  r << "end"
595
706
 
596
- r
707
+ r.join
597
708
  elsif f
598
709
  unless expand then
599
710
  r = "#{f} unless #{c}"
@@ -610,6 +721,8 @@ class Ruby2Ruby < SexpProcessor
610
721
  "->"
611
722
  end
612
723
 
724
+ MUST_BE_CURLY = %w[ BEGIN END ]
725
+
613
726
  def process_iter(exp) # :nodoc:
614
727
  _, iter, args, body = exp
615
728
 
@@ -627,13 +740,13 @@ class Ruby2Ruby < SexpProcessor
627
740
  " |#{process(args)[1..-2]}|"
628
741
  end
629
742
 
630
- b, e = if iter == "END" then
743
+ b, e = if MUST_BE_CURLY.include? iter then
631
744
  %w[ { } ]
632
745
  else
633
746
  %w[ do end ]
634
747
  end
635
748
 
636
- iter.sub!(/\(\)$/, "")
749
+ iter = iter.sub(/\(\)$/, "")
637
750
 
638
751
  # REFACTOR: ugh
639
752
  result = []
@@ -676,7 +789,8 @@ class Ruby2Ruby < SexpProcessor
676
789
 
677
790
  def process_ivar(exp) # :nodoc:
678
791
  _, name = exp
679
- name.to_s
792
+
793
+ __var name
680
794
  end
681
795
 
682
796
  def process_kwsplat(exp)
@@ -687,9 +801,18 @@ class Ruby2Ruby < SexpProcessor
687
801
  def process_lasgn(exp) # :nodoc:
688
802
  _, name, value = exp
689
803
 
690
- s = "#{name}"
691
- s += " = #{process value}" if value
692
- s
804
+ value = process value
805
+
806
+ if value then
807
+ "%s %s %s" % case context[1]
808
+ when /_pat$/ then
809
+ [value, "=>", name]
810
+ else
811
+ [name, "=", value]
812
+ end
813
+ else
814
+ "%s" % [name]
815
+ end
693
816
  end
694
817
 
695
818
  def process_lit exp # :nodoc:
@@ -704,7 +827,8 @@ class Ruby2Ruby < SexpProcessor
704
827
 
705
828
  def process_lvar(exp) # :nodoc:
706
829
  _, name = exp
707
- name.to_s
830
+
831
+ __var name
708
832
  end
709
833
 
710
834
  def process_masgn(exp) # :nodoc:
@@ -793,12 +917,20 @@ class Ruby2Ruby < SexpProcessor
793
917
 
794
918
  def process_op_asgn exp # :nodoc:
795
919
  # [[:lvar, :x], [:call, nil, :z, [:lit, 1]], :y, :"||"]
796
- _, lhs, rhs, index, op = exp
797
920
 
798
- lhs = process lhs
799
- rhs = process rhs
921
+ case exp.length
922
+ when 4
923
+ raise "NOT YET: op_asgn 4"
924
+ when 5
925
+ _, lhs, rhs, index, op = exp
926
+
927
+ lhs = process lhs
928
+ rhs = process rhs
800
929
 
801
- "#{lhs}.#{index} #{op}= #{rhs}"
930
+ "#{lhs}.#{index} #{op}= #{rhs}"
931
+ else
932
+ raise ArgumentError, "Don't know how to process this length: %p" % [exp]
933
+ end
802
934
  end
803
935
 
804
936
  def process_op_asgn1(exp) # :nodoc:
@@ -840,7 +972,15 @@ class Ruby2Ruby < SexpProcessor
840
972
  def process_or(exp) # :nodoc:
841
973
  _, lhs, rhs = exp
842
974
 
843
- "(#{process lhs} or #{process rhs})"
975
+ lhs = process lhs
976
+ rhs = process rhs
977
+
978
+ case context[1]
979
+ when :in then
980
+ "(#{lhs} | #{rhs})"
981
+ else
982
+ "(#{lhs} or #{rhs})"
983
+ end
844
984
  end
845
985
 
846
986
  def process_postexe(exp) # :nodoc:
@@ -1029,10 +1169,6 @@ class Ruby2Ruby < SexpProcessor
1029
1169
  end
1030
1170
 
1031
1171
  def process_when exp # :nodoc:
1032
- s(:when, s(:array, s(:lit, 1)),
1033
- s(:call, nil, :puts, s(:str, "something")),
1034
- s(:lasgn, :result, s(:str, "red")))
1035
-
1036
1172
  _, lhs, *rhs = exp
1037
1173
 
1038
1174
  cond = process(lhs)[1..-2]
@@ -42,6 +42,15 @@ class TestRuby2Ruby < R2RTestCase
42
42
  @processor = Ruby2Ruby.new
43
43
  end
44
44
 
45
+ # some things don't work in earlier rubies... oh well.
46
+ def skip30
47
+ skip unless RUBY_VERSION > "3.0"
48
+ end
49
+
50
+ def skip31
51
+ skip unless RUBY_VERSION > "3.1"
52
+ end
53
+
45
54
  def do_not_check_sexp!
46
55
  @check_sexp = false
47
56
  end
@@ -100,8 +109,8 @@ class TestRuby2Ruby < R2RTestCase
100
109
  end
101
110
 
102
111
  def test_hash_parens_lvar
103
- inn = s(:hash, s(:lit, :k), s(:lvar, :x))
104
- out = "{ :k => x }"
112
+ inn = s(:hash, s(:lit, :k), s(:lvar, :a))
113
+ out = "{ :k => a }"
105
114
  assert_parse inn, out
106
115
  end
107
116
 
@@ -118,6 +127,23 @@ class TestRuby2Ruby < R2RTestCase
118
127
  assert_parse inn, out
119
128
  end
120
129
 
130
+ def test_hash_shorthand
131
+ inn = s(:hash, s(:lit, :k), nil)
132
+ out = '{ k: }'
133
+
134
+ assert_parse inn, out
135
+ end
136
+
137
+ def test_hash_shorthand_invalid_key_type
138
+ do_not_check_sexp!
139
+
140
+ inn = s(:hash, s(:str, 'k'), nil)
141
+ out = '{ k: }'
142
+ assert_raises do
143
+ assert_parse inn, out
144
+ end
145
+ end
146
+
121
147
  def test_and_alias
122
148
  inn = s(:and, s(:true), s(:alias, s(:lit, :a), s(:lit, :b)))
123
149
  out = "true and (alias :a :b)"
@@ -351,15 +377,6 @@ class TestRuby2Ruby < R2RTestCase
351
377
  assert_parse inn, out
352
378
  end
353
379
 
354
- def test_defn_kwargs
355
- inn = s(:defn, :initialize,
356
- s(:args, :arg, s(:kwarg, :keyword, s(:nil)), :"**args"),
357
- s(:nil))
358
- out = "def initialize(arg, keyword: nil, **args)\n # do nothing\nend"
359
-
360
- assert_parse inn, out
361
- end
362
-
363
380
  def test_defn_kwargs2
364
381
  inn = s(:defn, :initialize,
365
382
  s(:args, :arg,
@@ -373,55 +390,34 @@ class TestRuby2Ruby < R2RTestCase
373
390
  end
374
391
 
375
392
  def test_call_self_index
376
- assert_parse s(:call, nil, :[], s(:lit, 42)), "self[42]"
393
+ assert_parse s(:call, s(:self), :[], s(:lit, 42)), "self[42]"
377
394
  end
378
395
 
379
396
  def test_call_self_index_equals
380
397
  assert_parse(s(:attrasgn, s(:self), :[]=, s(:lit, 42), s(:lit, 24)),
381
398
  "self[42] = 24")
382
- end
383
-
384
- def test_call_self_index_equals_array
385
399
  assert_parse(s(:attrasgn, s(:self), :[]=, s(:lit, 1), s(:lit, 2), s(:lit, 3)),
386
400
  "self[1, 2] = 3")
387
401
  end
388
402
 
389
- def test_call_arglist_hash_first
390
- inn = s(:call, nil, :method,
391
- s(:hash, s(:lit, :a), s(:lit, 1)),
392
- s(:call, nil, :b))
393
- out = "method({ :a => 1 }, b)"
394
-
395
- assert_parse inn, out
396
- end
397
-
398
403
  def test_call_arglist_hash_first_last
399
404
  inn = s(:call, nil, :method,
400
405
  s(:hash, s(:lit, :a), s(:lit, 1)),
401
- s(:call, nil, :b),
406
+ s(:lvar, :b),
402
407
  s(:hash, s(:lit, :c), s(:lit, 1)))
403
408
  out = "method({ :a => 1 }, b, :c => 1)"
404
409
 
405
410
  assert_parse inn, out
406
411
  end
407
412
 
408
- def test_call_arglist_hash_last
409
- inn = s(:call, nil, :method,
410
- s(:call, nil, :b),
411
- s(:hash, s(:lit, :a), s(:lit, 1)))
412
- out = "method(b, :a => 1)"
413
-
414
- assert_parse inn, out
415
- end
416
-
417
413
  def test_call_arglist_if
418
414
  inn = s(:call,
419
- s(:call, nil, :a),
415
+ s(:lvar, :a),
420
416
  :+,
421
417
  s(:if,
422
- s(:call, nil, :b),
423
- s(:call, nil, :c),
424
- s(:call, nil, :d)))
418
+ s(:lvar, :b),
419
+ s(:lvar, :c),
420
+ s(:lvar, :d)))
425
421
 
426
422
  out = "(a + (b ? (c) : (d)))"
427
423
  assert_parse inn, out
@@ -443,12 +439,27 @@ class TestRuby2Ruby < R2RTestCase
443
439
  assert_parse inn, out
444
440
  end
445
441
 
442
+ def test_forward_args__defn
443
+ inn = s(:defn, :x, s(:args, :a, s(:forward_args)), s(:nil))
444
+ out = "def x(a, ...)\n # do nothing\nend"
445
+
446
+ assert_parse inn, out
447
+ end
448
+
449
+ def test_forward_args__call
450
+ skip31
451
+
452
+ inn = s(:defn, :x, s(:args, s(:forward_args)), s(:call, nil, :y, s(:forward_args)))
453
+ out = "def x(...)\n y(...)\nend"
454
+
455
+ assert_parse inn, out
456
+ end
457
+
446
458
  def test_shadow_block_args
447
459
  inn = s(:iter,
448
460
  s(:call, nil, :a),
449
461
  s(:args,
450
- s(:shadow, :b),
451
- s(:shadow, :c)))
462
+ s(:shadow, :b, :c)))
452
463
  out = 'a { |; b, c| }'
453
464
 
454
465
  assert_parse inn, out
@@ -481,19 +492,6 @@ class TestRuby2Ruby < R2RTestCase
481
492
  assert_parse inn, out
482
493
  end
483
494
 
484
- def test_multiple_nested_masgn_block_arg
485
- inn = s(:iter,
486
- s(:call, nil, :a),
487
- s(:args, :b,
488
- s(:masgn,
489
- s(:masgn, :c, :d),
490
- :e,
491
- s(:masgn, :f, :g))))
492
- out = "a { |b, ((c, d), e, (f, g))| }"
493
-
494
- assert_parse inn, out
495
- end
496
-
497
495
  def test_multiple_nested_masgn_array
498
496
  inn = s(:masgn,
499
497
  s(:array,
@@ -544,6 +542,13 @@ class TestRuby2Ruby < R2RTestCase
544
542
  assert_parse inn, out
545
543
  end
546
544
 
545
+ def test_preexe
546
+ inn = s(:iter, s(:preexe), 0, s(:block, s(:lit, 1), s(:lit, 2), s(:lit, 3)))
547
+ out = "BEGIN {\n 1\n 2\n 3\n}"
548
+
549
+ assert_parse inn, out
550
+ end
551
+
547
552
  def test_safe_attrasgn
548
553
  inn = s(:safe_attrasgn,
549
554
  s(:call, nil, :x),
@@ -578,6 +583,8 @@ class TestRuby2Ruby < R2RTestCase
578
583
  end
579
584
 
580
585
  def test_safe_op_asgn
586
+ do_not_check_sexp! # TODO: fix!
587
+
581
588
  inn = s(:safe_op_asgn,
582
589
  s(:call, nil, :x),
583
590
  s(:call, nil, :z, s(:lit, 1)),
@@ -611,38 +618,6 @@ class TestRuby2Ruby < R2RTestCase
611
618
  assert_parse inn, out
612
619
  end
613
620
 
614
- def test_resbody_block
615
- inn = s(:rescue,
616
- s(:call, nil, :x1),
617
- s(:resbody,
618
- s(:array),
619
- s(:call, nil, :x2),
620
- s(:call, nil, :x3)))
621
-
622
- out = "begin\n x1\nrescue\n x2\n x3\nend"
623
- assert_parse inn, out
624
- end
625
-
626
- def test_resbody_short_with_begin_end
627
- # "begin; blah; rescue; []; end"
628
- inn = s(:rescue,
629
- s(:call, nil, :blah),
630
- s(:resbody, s(:array), s(:array)))
631
- out = "blah rescue []"
632
- assert_parse inn, out
633
- end
634
-
635
- def test_resbody_short_with_begin_end_multiple
636
- # "begin; blah; rescue; []; end"
637
- inn = s(:rescue,
638
- s(:call, nil, :blah),
639
- s(:resbody, s(:array),
640
- s(:call, nil, :log),
641
- s(:call, nil, :raise)))
642
- out = "begin\n blah\nrescue\n log\n raise\nend"
643
- assert_parse inn, out
644
- end
645
-
646
621
  def test_resbody_short_with_defn_multiple
647
622
  inn = s(:defn,
648
623
  :foo,
@@ -678,9 +653,7 @@ class TestRuby2Ruby < R2RTestCase
678
653
  end
679
654
 
680
655
  def test_call_binary_call_with_hash_arg
681
- # if 42
682
- # args << {:key => 24}
683
- # end
656
+ # args << {:key => 24} if 42
684
657
 
685
658
  inn = s(:if, s(:lit, 42),
686
659
  s(:call, s(:call, nil, :args),
@@ -704,8 +677,8 @@ class TestRuby2Ruby < R2RTestCase
704
677
 
705
678
  def test_binary_operators_with_multiple_arguments
706
679
  Ruby2Ruby::BINARY.each do |op|
707
- inn = s(:call, s(:lvar, :x), op, s(:lit, 2), s(:lit, 3))
708
- out = "x.#{op}(2, 3)"
680
+ inn = s(:call, s(:lvar, :a), op, s(:lit, 2), s(:lit, 3))
681
+ out = "a.#{op}(2, 3)"
709
682
  assert_parse inn, out
710
683
  end
711
684
  end
@@ -722,6 +695,309 @@ class TestRuby2Ruby < R2RTestCase
722
695
  assert_parse inn, out
723
696
  end
724
697
 
698
+ def test_case_in_normal_01
699
+ assert_case_in "var", s(:lasgn, :var)
700
+ end
701
+
702
+ def test_case_in_normal_02
703
+ assert_case_in "^var", s(:lvar, :var)
704
+ end
705
+
706
+ def test_case_in_normal_04
707
+ assert_case_in "A if true", s(:if, s(:true), s(:const, :A), nil)
708
+ end
709
+
710
+ def test_case_in_normal_05
711
+ assert_case_in "A unless true", s(:if, s(:true), nil, s(:const, :A))
712
+ end
713
+
714
+ def test_case_in_normal_06
715
+ assert_case_in "A::B", s(:const, s(:colon2, s(:const, :A), :B))
716
+ end
717
+
718
+ def test_case_in_normal_07
719
+ assert_case_in "A | B", s(:or, s(:const, :A), s(:const, :B)), "(A | B)"
720
+
721
+ # TODO: assert_case_in "(A or B)", s(:const, s(:colon2, s(:colon3, :A), :B))
722
+ end
723
+
724
+ def test_case_in_normal_08
725
+ assert_case_in "::A::B", s(:const, s(:colon2, s(:colon3, :A), :B))
726
+ end
727
+
728
+ def test_case_in_normal_09
729
+ assert_case_in "A", s(:const, :A)
730
+ end
731
+
732
+ def test_case_in__array_pat_00
733
+ assert_case_in "Object[]", s(:array_pat, s(:const, :Object))
734
+ end
735
+
736
+ def test_case_in__array_pat_01
737
+ assert_case_in "[]", s(:array_pat)
738
+ end
739
+
740
+ def test_case_in__array_pat_02
741
+ assert_case_in "[*, ::NilClass]", s(:array_pat, nil, :*, s(:colon3, :NilClass))
742
+ end
743
+
744
+ def test_case_in__array_pat_03
745
+ assert_case_in "[*, :b, :c]", s(:array_pat, nil, :*, s(:lit, :b), s(:lit, :c))
746
+ end
747
+
748
+ def test_case_in__array_pat_04
749
+ assert_case_in "[[:b, ^c], [:d, ^e]]", s(:array_pat, nil, s(:array_pat, nil, s(:lit, :b), s(:lvar, :c)), s(:array_pat, nil, s(:lit, :d), s(:lvar, :e)))
750
+ end
751
+
752
+ def test_case_in__array_pat_06
753
+ assert_case_in "[A, *, B]", s(:array_pat, nil, s(:const, :A), :*, s(:const, :B))
754
+ end
755
+
756
+ def test_case_in__array_pat_07
757
+ assert_case_in "[-> (b) { true }, ^c]", s(:array_pat, nil, s(:iter, s(:lambda), s(:args, :b), s(:true)), s(:lvar, :c))
758
+ end
759
+
760
+ def test_case_in__array_pat_09
761
+ assert_case_in "[:a, ^b, ^c, [:d, *e, nil]]", s(:array_pat, nil, s(:lit, :a), s(:lvar, :b), s(:lvar, :c), s(:array_pat, nil, s(:lit, :d), :"*e", s(:nil)))
762
+ end
763
+
764
+ def test_case_in__array_pat_14
765
+ assert_case_in "A[*list]", s(:array_pat, s(:const, :A), :"*list")
766
+ end
767
+
768
+ def test_case_in__array_pat_15
769
+ assert_case_in "B[C => d]", s(:array_pat, s(:const, :B), s(:lasgn, :d, s(:const, :C)))
770
+ end
771
+
772
+ def test_case_in__array_pat_16
773
+ assert_case_in "B[^c]", s(:array_pat, s(:const, :B), s(:lvar, :c))
774
+ end
775
+
776
+ def test_case_in__array_pat_19
777
+ skip31
778
+
779
+ assert_case_in "[^@a, ^$b, ^@@c]", s(:array_pat, nil, s(:ivar, :@a), s(:gvar, :$b), s(:cvar, :@@c)) # HACK: really not sure about this one
780
+ end
781
+
782
+ def test_case_in__find_pat_1
783
+ skip30
784
+
785
+ assert_case_in "[*a, :+, *b]", s(:find_pat, nil, :"*a",
786
+ s(:lit, :+),
787
+ :"*b")
788
+ end
789
+
790
+ def test_case_in__find_pat_2
791
+ skip30
792
+
793
+ assert_case_in "[*, :b, ^c, *]", s(:find_pat, nil,
794
+ :*,
795
+ s(:lit, :b), s(:lvar, :c),
796
+ :*)
797
+ end
798
+
799
+ def test_case_in__find_pat_3
800
+ skip30
801
+
802
+ assert_case_in("Array(*b, n, { a: }, m, *a)",
803
+ s(:find_pat,
804
+ s(:const, :Array),
805
+ :"*b",
806
+ s(:lasgn, :n),
807
+ s(:hash_pat, nil, s(:lit, :a), nil),
808
+ s(:lasgn, :m),
809
+ :"*a"),
810
+ "Array[*b, n, { a: }, m, *a]")
811
+ end
812
+
813
+ def test_case_in__find_pat_4
814
+ skip30
815
+
816
+ assert_case_in("*b, n, { a: }, m, *a", s(:find_pat,
817
+ nil,
818
+ :"*b",
819
+ s(:lasgn, :n),
820
+ s(:hash_pat, nil, s(:lit, :a), nil),
821
+ s(:lasgn, :m),
822
+ :"*a"),
823
+ "[*b, n, { a: }, m, *a]")
824
+ end
825
+
826
+ def test_case_in__find_pat_5
827
+ skip30
828
+
829
+ assert_case_in("Array(*lhs, ^b, *rhs)", s(:find_pat,
830
+ s(:const, :Array),
831
+ :"*lhs",
832
+ s(:lvar, :b),
833
+ :"*rhs"),
834
+ "Array[*lhs, ^b, *rhs]")
835
+ end
836
+
837
+ def test_case_in__find_pat_6
838
+ assert_case_in("Array[*lhs, b, *rhs]", s(:find_pat,
839
+ s(:const, :Array),
840
+ :"*lhs",
841
+ s(:lasgn, :b),
842
+ :"*rhs"))
843
+ end
844
+
845
+ def test_case_in__find_pat_7
846
+ assert_case_in("Array[*lhs, :b, *rhs]", s(:find_pat,
847
+ s(:const, :Array),
848
+ :"*lhs",
849
+ s(:lit, :b),
850
+ :"*rhs"))
851
+ end
852
+
853
+ def test_case_in_10
854
+ assert_case_in("[nil, nil, nil]",
855
+ s(:array_pat,
856
+ nil,
857
+ s(:nil),
858
+ s(:nil),
859
+ s(:nil)))
860
+ end
861
+
862
+ def test_case_in_32_2
863
+ assert_case_in "1..3", s(:dot2, s(:lit, 1), s(:lit, 3)), "(1..3)"
864
+ end
865
+
866
+ def test_case_in_32_3
867
+ assert_case_in "1...3", s(:dot3, s(:lit, 1), s(:lit, 3)), "(1...3)"
868
+ end
869
+
870
+ def test_case_in_36
871
+ pt = s(:array_pat, nil,
872
+ s(:lit, :a), s(:lasgn, :b), s(:lvar, :d), :"*e", s(:nil))
873
+
874
+ assert_case_in "[:a, b, ^d, *e, nil]", pt
875
+ end
876
+
877
+ def test_case_in_42
878
+ rb = "case :a\nin [:b, *_] then\n nil\nend"
879
+ pt = s(:case, s(:lit, :a),
880
+ s(:in,
881
+ s(:array_pat,
882
+ nil,
883
+ s(:lit, :b),
884
+ :"*_",
885
+ ),
886
+ s(:nil)),
887
+ nil)
888
+
889
+ assert_parse pt, rb
890
+ assert_variant pt, "case :a\nin :b, *_ then\n nil\nend"
891
+ end
892
+
893
+ def test_case_in_42_2
894
+ rb = "case :a\nin A[*list] then\n nil\nend"
895
+ pt = s(:case, s(:lit, :a),
896
+ s(:in,
897
+ s(:array_pat,
898
+ s(:const, :A),
899
+ :"*list"),
900
+ s(:nil)),
901
+ nil)
902
+
903
+ assert_parse pt, rb
904
+ assert_variant pt, "case :a\nin A(*list) then\n nil\nend"
905
+ end
906
+
907
+ def test_case_in_67
908
+ rb = "case :a\nin 1.. then nil\nend"
909
+ rb = "case :a\nin (1..) then\n nil\nend"
910
+ pt = s(:case,
911
+ s(:lit, :a),
912
+ s(:in, s(:dot2, s(:lit, 1), nil),
913
+ s(:nil)),
914
+ nil)
915
+
916
+ assert_parse pt, rb
917
+ end
918
+
919
+ def test_case_in_76
920
+ assert_case_in "`echo hi`", s(:xstr, "echo hi")
921
+ end
922
+
923
+ def test_case_in_77
924
+ assert_case_in "/regexp/", s(:lit, /regexp/)
925
+ end
926
+
927
+ def test_case_in_79
928
+ assert_case_in "%w[a b]", s(:array_pat, nil, s(:str, "a"), s(:str, "b")), "[\"a\", \"b\"]"
929
+ end
930
+
931
+ def test_case_in_80
932
+ assert_case_in "%I[a b]", s(:array_pat, nil, s(:lit, :a), s(:lit, :b)), "[:a, :b]"
933
+ end
934
+
935
+ def test_case_in_83
936
+ pt = s(:array_pat, nil,
937
+ s(:iter, s(:lambda), s(:args, :b),
938
+ s(:true)),
939
+ s(:lasgn, :c))
940
+
941
+ assert_case_in "[-> (b) { true }, c]", pt
942
+ end
943
+
944
+ def test_case_in_85
945
+ pt = s(:array_pat, nil,
946
+ s(:array_pat, nil,
947
+ s(:lit, :b),
948
+ s(:lasgn, :c)),
949
+ s(:array_pat,
950
+ nil,
951
+ s(:lit, :d),
952
+ s(:lvar, :e)),
953
+ )
954
+
955
+ assert_case_in "[[:b, c], [:d, ^e]]", pt
956
+ end
957
+
958
+ def test_case_in__hash_pat_00
959
+ assert_case_in "{}", s(:hash_pat, nil)
960
+ end
961
+
962
+ def test_case_in__hash_pat_01
963
+ assert_case_in "**nil", s(:hash_pat, nil, s(:kwrest, :"**nil")), "{ **nil }"
964
+ end
965
+
966
+ def test_case_in__hash_pat_03
967
+ assert_case_in "a:", s(:hash_pat, nil, s(:lit, :a), nil), "{ a: }"
968
+ end
969
+
970
+ def test_case_in__hash_pat_06
971
+ assert_case_in "a:1, **r",s(:hash_pat, nil, s(:lit, :a), s(:lit, 1), s(:kwrest, :"**r")), "{ a: 1, **r }"
972
+ end
973
+
974
+ def test_case_in__hash_pat_08
975
+ assert_case_in "{ b: [Hash, *] }", s(:hash_pat, nil, s(:lit, :b), s(:array_pat, nil, s(:const, :Hash), :*))
976
+ end
977
+
978
+ def test_case_in__hash_pat_09
979
+ assert_case_in("{ b: Integer => x, d: \"e\", f: }",
980
+ s(:hash_pat, nil,
981
+ s(:lit, :b), s(:lasgn, :x, s(:const, :Integer)),
982
+ s(:lit, :d), s(:str, "e"), s(:lit, :f), nil))
983
+ end
984
+
985
+ def test_case_in__hash_pat_10
986
+ assert_case_in "{ b: ^c, **r }", s(:hash_pat, nil, s(:lit, :b), s(:lvar, :c), s(:kwrest, :"**r"))
987
+ end
988
+
989
+ def test_case_in__hash_pat_11
990
+ assert_case_in "{ b: \"c\", d: \"e\" }", s(:hash_pat, nil, s(:lit, :b), s(:str, "c"), s(:lit, :d), s(:str, "e"))
991
+ end
992
+
993
+ def test_case_in__hash_pat_12
994
+ assert_case_in "{ b: true }", s(:hash_pat, nil, s(:lit, :b), s(:true))
995
+ end
996
+
997
+ def test_case_in__hash_pat_14
998
+ assert_case_in "Object[b: 1]", s(:hash_pat, s(:const, :Object), s(:lit, :b), s(:lit, 1))
999
+ end
1000
+
725
1001
  def test_interpolation_and_escapes
726
1002
  # log_entry = " \e[#{message_color}m#{message}\e[0m "
727
1003
  inn = s(:lasgn, :log_entry,
@@ -756,12 +1032,6 @@ class TestRuby2Ruby < R2RTestCase
756
1032
  assert_parse inn, out
757
1033
  end
758
1034
 
759
- def test_basic_ensure
760
- inn = s(:ensure, s(:lit, 1), s(:lit, 2))
761
- out = "begin\n 1\nensure\n 2\nend"
762
- assert_parse inn, out
763
- end
764
-
765
1035
  def test_nested_ensure
766
1036
  inn = s(:ensure, s(:lit, 1), s(:ensure, s(:lit, 2), s(:lit, 3)))
767
1037
  out = "begin\n 1\nensure\n begin\n 2\n ensure\n 3\n end\nend"
@@ -775,18 +1045,18 @@ class TestRuby2Ruby < R2RTestCase
775
1045
  end
776
1046
 
777
1047
  def test_nested_rescue_exception
778
- inn = s(:ensure, s(:lit, 1), s(:rescue, s(:lit, 2), s(:resbody, s(:array, s(:const, :Exception)), s(:lit, 3))))
1048
+ inn = s(:ensure,
1049
+ s(:lit, 1),
1050
+ s(:rescue, s(:lit, 2),
1051
+ s(:resbody, s(:array, s(:const, :Exception)),
1052
+ s(:lit, 3))))
779
1053
  out = "begin\n 1\nensure\n begin\n 2\n rescue Exception\n 3\n end\nend"
780
1054
  assert_parse inn, out
781
1055
  end
782
1056
 
783
- def test_nested_rescue_exception2
784
- inn = s(:ensure, s(:rescue, s(:lit, 2), s(:resbody, s(:array, s(:const, :Exception)), s(:lit, 3))), s(:lit, 1))
785
- out = "begin\n 2\nrescue Exception\n 3\nensure\n 1\nend"
786
- assert_parse inn, out
787
- end
788
-
789
1057
  def test_op_asgn
1058
+ do_not_check_sexp! # TODO: fix!
1059
+
790
1060
  inn = s(:op_asgn,
791
1061
  s(:call, nil, :x),
792
1062
  s(:call, nil, :z, s(:lit, 1)),
@@ -809,42 +1079,80 @@ class TestRuby2Ruby < R2RTestCase
809
1079
 
810
1080
  def test_array_adds_parens_around_rescue
811
1081
  inn = s(:array,
812
- s(:call, nil, :a),
813
- s(:rescue, s(:call, nil, :b), s(:resbody, s(:array), s(:call, nil, :c))))
1082
+ s(:lvar, :a),
1083
+ s(:rescue, s(:lvar, :b), s(:resbody, s(:array), s(:lvar, :c))))
814
1084
  out = "[a, (b rescue c)]"
815
1085
 
816
1086
  assert_parse inn, out
817
1087
  end
818
1088
 
819
1089
  def test_call_arglist_rescue
820
- inn = s(:call,
821
- nil,
822
- :method,
1090
+ inn = s(:call, nil, :method,
823
1091
  s(:rescue,
824
- s(:call, nil, :a),
825
- s(:resbody, s(:array), s(:call, nil, :b))))
1092
+ s(:lvar, :a),
1093
+ s(:resbody, s(:array), s(:lvar, :b))))
826
1094
  out = "method((a rescue b))"
827
1095
  assert_parse inn, out
828
1096
  end
829
1097
 
830
1098
  def test_unless_vs_if_not
1099
+ do_not_check_sexp! # TODO: remove? dunno if that's possible w/ this one
1100
+
831
1101
  rb1 = "a unless b"
832
1102
  rb2 = "a if (not b)"
833
1103
  rb3 = "a if ! b"
834
1104
 
835
- assert_parse RubyParser.new.parse(rb1), rb1
1105
+ assert_parse ruby_parser.parse(rb1), rb1
836
1106
 
837
- assert_parse RubyParser.new.parse(rb2), rb1
1107
+ assert_parse ruby_parser.parse(rb2), rb1
838
1108
 
839
- assert_parse RubyParser.new.parse(rb3), rb1
1109
+ assert_parse ruby_parser.parse(rb3), rb1
840
1110
  end
841
1111
 
842
- def assert_parse sexp, expected_ruby, expected_eval = nil
843
- assert_equal sexp, RubyParser.new.process(expected_ruby), "ruby -> sexp" if
844
- @check_sexp
1112
+ def ruby_parser
1113
+ parser = RubyParser.latest
845
1114
 
1115
+ %i[a b c d].each do |v|
1116
+ parser.env[v] = :lvar
1117
+ end
1118
+
1119
+ parser
1120
+ end
1121
+
1122
+ def assert_parse sexp, expected_ruby, expected_eval = nil
846
1123
  assert_equal expected_ruby, @processor.process(sexp), "sexp -> ruby"
847
1124
  assert_equal expected_eval, eval(expected_ruby) if expected_eval
1125
+ assert_variant sexp, expected_ruby if @check_sexp
1126
+ end
1127
+
1128
+ def assert_variant sexp, expected_ruby
1129
+ assert_equal sexp, ruby_parser.process(expected_ruby), "ruby -> sexp"
1130
+ end
1131
+
1132
+ def assert_case_in lit, exp_pt, normal_lit = nil
1133
+ rb = "case :a\nin #{normal_lit || lit} then\n # do nothing\nend"
1134
+
1135
+ exp_pt.deep_each { |s| s.line ||= 2 }
1136
+ exp_pt.line ||= 2
1137
+
1138
+ # flunk "redundant: #{lit.inspect}" if normal_lit == lit
1139
+ # flunk "redundant: #{lit.inspect}" if normal_lit && normal_lit[1..-2] == lit
1140
+ normal_lit, lit = lit, lit[1..-2] if lit =~ /^\[.+\]$/ && !normal_lit
1141
+
1142
+ if ENV["VERBOSE_TEST"] then
1143
+ puts
1144
+ puts rb
1145
+ end
1146
+
1147
+ pt = s(:case, s(:lit, :a).line(1),
1148
+ s(:in, exp_pt, nil).line(2),
1149
+ nil).line(1)
1150
+
1151
+ if normal_lit then
1152
+ assert_variant pt, "case :a\nin #{lit} then\n # do nothing\nend"
1153
+ end
1154
+
1155
+ assert_parse pt, rb
848
1156
  end
849
1157
 
850
1158
  def util_thingy(type)
@@ -864,22 +1172,17 @@ end
864
1172
  # s
865
1173
  # t new 2 3
866
1174
 
867
- tr2r = File.read(__FILE__).split(/\n/)[start + 1..__LINE__ - 2].join("\n")
1175
+ tr2r = File.read(__FILE__).lines[start + 1..__LINE__ - 2].join
868
1176
  ir2r = File.read("lib/ruby2ruby.rb")
869
1177
 
870
1178
  require "ruby_parser"
871
1179
 
872
- def silent_eval ruby
873
- old, $-w = $-w, nil
874
- eval ruby
875
- $-w = old
876
- end
877
-
878
1180
  def morph_and_eval src, from, to, processor
879
- parser = RubyParser.for_current_ruby rescue RubyParser.new
1181
+ parser = RubyParser.latest
880
1182
  new_src = processor.new.process(parser.process(src.sub(from, to)))
881
1183
 
882
- silent_eval new_src
1184
+ eval new_src
1185
+
883
1186
  new_src
884
1187
  end
885
1188
 
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,18 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby2ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.4
4
+ version: 2.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Davis
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
- MIIDPjCCAiagAwIBAgIBAzANBgkqhkiG9w0BAQsFADBFMRMwEQYDVQQDDApyeWFu
13
+ MIIDPjCCAiagAwIBAgIBCDANBgkqhkiG9w0BAQsFADBFMRMwEQYDVQQDDApyeWFu
14
14
  ZC1ydWJ5MRkwFwYKCZImiZPyLGQBGRYJemVuc3BpZGVyMRMwEQYKCZImiZPyLGQB
15
- GRYDY29tMB4XDTE4MTIwNDIxMzAxNFoXDTE5MTIwNDIxMzAxNFowRTETMBEGA1UE
15
+ GRYDY29tMB4XDTI0MDEwMjIxMjEyM1oXDTI1MDEwMTIxMjEyM1owRTETMBEGA1UE
16
16
  AwwKcnlhbmQtcnVieTEZMBcGCgmSJomT8ixkARkWCXplbnNwaWRlcjETMBEGCgmS
17
17
  JomT8ixkARkWA2NvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALda
18
18
  b9DCgK+627gPJkB6XfjZ1itoOQvpqH1EXScSaba9/S2VF22VYQbXU1xQXL/WzCkx
@@ -22,14 +22,14 @@ cert_chain:
22
22
  qhtV7HJxNKuPj/JFH0D2cswvzznE/a5FOYO68g+YCuFi5L8wZuuM8zzdwjrWHqSV
23
23
  gBEfoTEGr7Zii72cx+sCAwEAAaM5MDcwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAw
24
24
  HQYDVR0OBBYEFEfFe9md/r/tj/Wmwpy+MI8d9k/hMA0GCSqGSIb3DQEBCwUAA4IB
25
- AQCbJwLmpJR2PomLU+Zzw3KRzH/hbyUWc/ftru71AopZ1fy4iY9J/BW5QYKVYwbP
26
- V0FSBWtvfI/RdwfKGtuGhPKECZgmLieGuZ3XCc09qPu1bdg7i/tu1p0t0c6163ku
27
- nDMDIC/t/DAFK0TY9I3HswuyZGbLW7rgF0DmiuZdN/RPhHq2pOLMLXJmFclCb/im
28
- 9yToml/06TJdUJ5p64mkBs0TzaK66DIB1Smd3PdtfZqoRV+EwaXMdx0Hb3zdR1JR
29
- Em82dBUFsipwMLCYj39kcyHWAxyl6Ae1Cn9r/ItVBCxoeFdrHjfavnrIEoXUt4bU
30
- UfBugfLD19bu3nvL+zTAGx/U
25
+ AQCygvpmncmkiSs9r/Kceo4bBPDszhTv6iBi4LwMReqnFrpNLMOWJw7xi8x+3eL2
26
+ XS09ZPNOt2zm70KmFouBMgOysnDY4k2dE8uF6B8JbZOO8QfalW+CoNBliefOTcn2
27
+ bg5IOP7UoGM5lC174/cbDJrJnRG9bzig5FAP0mvsgA8zgTRXQzIUAZEo92D5K7p4
28
+ B4/O998ho6BSOgYBI9Yk1ttdCtti6Y+8N9+fZESsjtWMykA+WXWeGUScHqiU+gH8
29
+ S7043fq9EbQdBr2AXdj92+CDwuTfHI6/Hj5FVBDULufrJaan4xUgL70Hvc6pTTeW
30
+ deKfBjgVAq7EYHu1AczzlUly
31
31
  -----END CERTIFICATE-----
32
- date: 2019-09-25 00:00:00.000000000 Z
32
+ date: 2024-07-08 00:00:00.000000000 Z
33
33
  dependencies:
34
34
  - !ruby/object:Gem::Dependency
35
35
  name: sexp_processor
@@ -85,14 +85,14 @@ dependencies:
85
85
  requirements:
86
86
  - - "~>"
87
87
  - !ruby/object:Gem::Version
88
- version: '3.18'
88
+ version: '4.2'
89
89
  type: :development
90
90
  prerelease: false
91
91
  version_requirements: !ruby/object:Gem::Requirement
92
92
  requirements:
93
93
  - - "~>"
94
94
  - !ruby/object:Gem::Version
95
- version: '3.18'
95
+ version: '4.2'
96
96
  description: |-
97
97
  ruby2ruby provides a means of generating pure ruby code easily from
98
98
  RubyParser compatible Sexps. This makes making dynamic language
@@ -118,8 +118,9 @@ files:
118
118
  homepage: https://github.com/seattlerb/ruby2ruby
119
119
  licenses:
120
120
  - MIT
121
- metadata: {}
122
- post_install_message:
121
+ metadata:
122
+ homepage_uri: https://github.com/seattlerb/ruby2ruby
123
+ post_install_message:
123
124
  rdoc_options:
124
125
  - "--main"
125
126
  - README.rdoc
@@ -136,8 +137,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
136
137
  - !ruby/object:Gem::Version
137
138
  version: '0'
138
139
  requirements: []
139
- rubygems_version: 3.0.6
140
- signing_key:
140
+ rubygems_version: 3.5.14
141
+ signing_key:
141
142
  specification_version: 4
142
143
  summary: ruby2ruby provides a means of generating pure ruby code easily from RubyParser
143
144
  compatible Sexps
metadata.gz.sig CHANGED
Binary file