ruby2ruby 1.3.1 → 2.0.0.b1
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +23 -0
- data/README.txt +12 -0
- data/Rakefile +43 -14
- data/bin/r2r_show +1 -1
- data/lib/ruby2ruby.rb +37 -30
- data/test/test_ruby2ruby.rb +59 -55
- data.tar.gz.sig +0 -0
- metadata +35 -28
- metadata.gz.sig +3 -1
data/History.txt
CHANGED
@@ -1,3 +1,26 @@
|
|
1
|
+
=== 2.0.0.b1 / 2012-07-27
|
2
|
+
|
3
|
+
* 4 major enhancements:
|
4
|
+
|
5
|
+
* Made it work without arglist in call.
|
6
|
+
* Made it work without scope/block in class/module/defn/defs.
|
7
|
+
* Removed block from resbody
|
8
|
+
* Removed block from when node
|
9
|
+
|
10
|
+
* 4 minor enhancements:
|
11
|
+
|
12
|
+
* Added debug task to help isolate an error
|
13
|
+
* Empty hash is now a proper {}
|
14
|
+
* Refactored and added finish method.
|
15
|
+
* Switched to new Ruby18Parser to avoid deprecation warnings
|
16
|
+
|
17
|
+
* 4 bug fixes:
|
18
|
+
|
19
|
+
* Fixed call with empty hash arg. (neilconway)
|
20
|
+
* OMG WTF... removed long decrepit ParseTree dependency
|
21
|
+
* Removed isolate/rake require to reduce minimum bootstrap to hoe + rake + rake install_plugins (*2)
|
22
|
+
* Skip 1.9 tests for now.
|
23
|
+
|
1
24
|
=== 1.3.1 / 2011-09-22
|
2
25
|
|
3
26
|
* 1 minor enhancement:
|
data/README.txt
CHANGED
@@ -48,6 +48,18 @@ processors in ruby easier than ever!
|
|
48
48
|
|
49
49
|
+ sudo gem install ruby2ruby
|
50
50
|
|
51
|
+
== How to Contribute:
|
52
|
+
|
53
|
+
To get started all you need is a checkout, rake, and hoe. The easiest
|
54
|
+
way is:
|
55
|
+
|
56
|
+
% git clone seattlerb/ruby2ruby # assumes you use the `hub` wrapper.
|
57
|
+
% gem i rake hoe
|
58
|
+
% rake install_plugins # installs hoe-seattlerb & isolate
|
59
|
+
% rake install_plugins # installs minitest (referenced from hoe-seattlerb)
|
60
|
+
|
61
|
+
From here you should be good to go. We accept pull requests on github.
|
62
|
+
|
51
63
|
== LICENSE:
|
52
64
|
|
53
65
|
(The MIT License)
|
data/Rakefile
CHANGED
@@ -2,7 +2,6 @@
|
|
2
2
|
|
3
3
|
require 'rubygems'
|
4
4
|
require 'hoe'
|
5
|
-
require 'isolate/rake'
|
6
5
|
|
7
6
|
Hoe.add_include_dirs("lib",
|
8
7
|
"../../ruby_parser/dev/lib",
|
@@ -16,36 +15,42 @@ Hoe.spec 'ruby2ruby' do
|
|
16
15
|
|
17
16
|
self.rubyforge_name = 'seattlerb'
|
18
17
|
|
19
|
-
dependency "sexp_processor", "~>
|
20
|
-
dependency "ruby_parser", "~>
|
21
|
-
|
18
|
+
dependency "sexp_processor", "~> 4.0"
|
19
|
+
dependency "ruby_parser", "~> 3.0.0.a4"
|
20
|
+
end
|
21
|
+
|
22
|
+
def process ruby, file="stdin"
|
23
|
+
require "ruby_parser"
|
24
|
+
require "ruby2ruby"
|
25
|
+
|
26
|
+
parser = RubyParser.new
|
27
|
+
ruby2ruby = Ruby2Ruby.new
|
28
|
+
|
29
|
+
begin
|
30
|
+
sexp = parser.process(ruby, file)
|
31
|
+
|
32
|
+
ruby2ruby.process(sexp)
|
33
|
+
rescue Interrupt => e
|
34
|
+
raise e
|
35
|
+
end
|
22
36
|
end
|
23
37
|
|
24
38
|
task :stress do
|
25
39
|
$: << "lib"
|
26
40
|
$: << "../../ruby_parser/dev/lib"
|
27
|
-
require "ruby_parser"
|
28
|
-
require "ruby2ruby"
|
29
41
|
require "pp"
|
30
42
|
|
31
43
|
files = Dir["../../*/dev/**/*.rb"]
|
32
44
|
|
33
45
|
warn "Stress testing against #{files.size} files"
|
34
|
-
parser = RubyParser.new
|
35
|
-
ruby2ruby = Ruby2Ruby.new
|
36
46
|
|
37
47
|
bad = {}
|
38
48
|
|
39
49
|
files.each do |file|
|
40
50
|
warn file
|
41
|
-
ruby = File.read(file)
|
42
51
|
|
43
52
|
begin
|
44
|
-
|
45
|
-
|
46
|
-
# $stderr.puts sexp.pretty_inspect
|
47
|
-
|
48
|
-
ruby2ruby.process(sexp)
|
53
|
+
process File.read(file), file
|
49
54
|
rescue Interrupt => e
|
50
55
|
raise e
|
51
56
|
rescue Exception => e
|
@@ -56,4 +61,28 @@ task :stress do
|
|
56
61
|
pp bad
|
57
62
|
end
|
58
63
|
|
64
|
+
task :debug => :isolate do
|
65
|
+
ENV["V"] ||= "18"
|
66
|
+
|
67
|
+
$: << "lib"
|
68
|
+
require 'ruby_parser'
|
69
|
+
|
70
|
+
parser = if ENV["V"] == "18" then
|
71
|
+
Ruby18Parser.new
|
72
|
+
else
|
73
|
+
Ruby19Parser.new
|
74
|
+
end
|
75
|
+
|
76
|
+
file = ENV["F"] || ENV["FILE"]
|
77
|
+
|
78
|
+
ruby = if file then
|
79
|
+
File.read(file)
|
80
|
+
else
|
81
|
+
file = "env"
|
82
|
+
ENV["R"] || ENV["RUBY"]
|
83
|
+
end
|
84
|
+
|
85
|
+
puts process(ruby, file)
|
86
|
+
end
|
87
|
+
|
59
88
|
# vim: syntax=ruby
|
data/bin/r2r_show
CHANGED
data/lib/ruby2ruby.rb
CHANGED
@@ -24,7 +24,7 @@ class Regexp
|
|
24
24
|
end
|
25
25
|
|
26
26
|
class Ruby2Ruby < SexpProcessor
|
27
|
-
VERSION = '
|
27
|
+
VERSION = '2.0.0.b1'
|
28
28
|
LINE_LENGTH = 78
|
29
29
|
|
30
30
|
BINARY = [:<=>, :==, :<, :>, :<=, :>=, :-, :+, :*, :/, :%, :<<, :>>, :**]
|
@@ -121,8 +121,8 @@ class Ruby2Ruby < SexpProcessor
|
|
121
121
|
|
122
122
|
case name
|
123
123
|
when :[]= then
|
124
|
-
rhs =
|
125
|
-
"#{receiver}[#{process
|
124
|
+
rhs = exp.empty? ? nil : exp.shift
|
125
|
+
"#{receiver}[#{process args}] = #{process rhs}"
|
126
126
|
else
|
127
127
|
name = name.to_s.sub(/=$/, '')
|
128
128
|
if args && args != s(:arglist) then
|
@@ -169,7 +169,7 @@ class Ruby2Ruby < SexpProcessor
|
|
169
169
|
|
170
170
|
def parenthesize exp
|
171
171
|
case self.context[1]
|
172
|
-
when nil, :
|
172
|
+
when nil, :defn, :defs, :class, :sclass, :if, :iter, :resbody, :when, :while then
|
173
173
|
exp
|
174
174
|
else
|
175
175
|
"(#{exp})"
|
@@ -208,12 +208,14 @@ class Ruby2Ruby < SexpProcessor
|
|
208
208
|
in_context :arglist do
|
209
209
|
until exp.empty? do
|
210
210
|
arg_type = exp.first.sexp_type
|
211
|
+
is_empty_hash = (exp.first == s(:hash))
|
211
212
|
arg = process exp.shift
|
212
213
|
|
213
214
|
next if arg.empty?
|
214
215
|
|
215
216
|
strip_hash = (arg_type == :hash and
|
216
217
|
not BINARY.include? name and
|
218
|
+
not is_empty_hash and
|
217
219
|
(exp.empty? or exp.first.sexp_type == :splat))
|
218
220
|
wrap_arg = Ruby2Ruby::ASSIGN_NODES.include? arg_type
|
219
221
|
|
@@ -332,20 +334,23 @@ class Ruby2Ruby < SexpProcessor
|
|
332
334
|
end
|
333
335
|
end
|
334
336
|
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
body
|
345
|
-
return "#{exp.comments}def #{name}#{args}\n#{body}\nend".gsub(/\n\s*\n+/, "\n")
|
346
|
-
else
|
347
|
-
raise "Unknown defn type: #{type1} for #{exp.inspect}"
|
337
|
+
comm = exp.comments
|
338
|
+
name = exp.shift
|
339
|
+
args = process(exp.shift)
|
340
|
+
args = "" if args == "()"
|
341
|
+
|
342
|
+
exp.shift if exp == s(s(:nil)) # empty it out of a default nil expression
|
343
|
+
|
344
|
+
body = []
|
345
|
+
until exp.empty? do
|
346
|
+
body << indent(process(exp.shift))
|
348
347
|
end
|
348
|
+
|
349
|
+
body << indent("# do nothing") if body.empty?
|
350
|
+
|
351
|
+
body = body.join("\n")
|
352
|
+
|
353
|
+
return "#{comm}def #{name}#{args}\n#{body}\nend".gsub(/\n\s*\n+/, "\n")
|
349
354
|
end
|
350
355
|
|
351
356
|
def process_defs(exp)
|
@@ -457,7 +462,7 @@ class Ruby2Ruby < SexpProcessor
|
|
457
462
|
result << "#{lhs} => #{rhs}"
|
458
463
|
end
|
459
464
|
|
460
|
-
return "{ #{result.join(', ')} }"
|
465
|
+
return result.empty? ? "{}" : "{ #{result.join(', ')} }"
|
461
466
|
end
|
462
467
|
|
463
468
|
def process_iasgn(exp)
|
@@ -706,7 +711,8 @@ class Ruby2Ruby < SexpProcessor
|
|
706
711
|
|
707
712
|
def process_resbody exp
|
708
713
|
args = exp.shift
|
709
|
-
body =
|
714
|
+
body = finish(exp)
|
715
|
+
body << "# do nothing" if body.empty?
|
710
716
|
|
711
717
|
name = args.lasgn true
|
712
718
|
name ||= args.iasgn true
|
@@ -714,7 +720,7 @@ class Ruby2Ruby < SexpProcessor
|
|
714
720
|
args = " #{args}" unless args.empty?
|
715
721
|
args += " => #{name[1]}" if name
|
716
722
|
|
717
|
-
"rescue#{args}\n#{indent body}"
|
723
|
+
"rescue#{args}\n#{indent body.join("\n")}"
|
718
724
|
end
|
719
725
|
|
720
726
|
def process_rescue exp
|
@@ -761,10 +767,6 @@ class Ruby2Ruby < SexpProcessor
|
|
761
767
|
"class << #{process(exp.shift)}\n#{indent(process(exp.shift))}\nend"
|
762
768
|
end
|
763
769
|
|
764
|
-
def process_scope(exp)
|
765
|
-
exp.empty? ? "" : process(exp.shift)
|
766
|
-
end
|
767
|
-
|
768
770
|
def process_self(exp)
|
769
771
|
"self"
|
770
772
|
end
|
@@ -782,10 +784,7 @@ class Ruby2Ruby < SexpProcessor
|
|
782
784
|
end
|
783
785
|
|
784
786
|
def process_super(exp)
|
785
|
-
args =
|
786
|
-
until exp.empty? do
|
787
|
-
args << process(exp.shift)
|
788
|
-
end
|
787
|
+
args = finish exp
|
789
788
|
|
790
789
|
"super(#{args.join(', ')})"
|
791
790
|
end
|
@@ -829,7 +828,7 @@ class Ruby2Ruby < SexpProcessor
|
|
829
828
|
|
830
829
|
until exp.empty?
|
831
830
|
cond = process(exp.shift).to_s[1..-2]
|
832
|
-
code = indent(
|
831
|
+
code = indent(finish(exp).join("\n"))
|
833
832
|
code = indent "# do nothing" if code =~ /\A\s*\Z/
|
834
833
|
src << "when #{cond} then\n#{code.chomp}"
|
835
834
|
end
|
@@ -935,6 +934,14 @@ class Ruby2Ruby < SexpProcessor
|
|
935
934
|
############################################################
|
936
935
|
# Utility Methods:
|
937
936
|
|
937
|
+
def finish exp # REFACTOR: work this out of the rest of the processors
|
938
|
+
body = []
|
939
|
+
until exp.empty? do
|
940
|
+
body << process(exp.shift)
|
941
|
+
end
|
942
|
+
body.compact
|
943
|
+
end
|
944
|
+
|
938
945
|
def dthing_escape type, lit
|
939
946
|
lit = lit.gsub(/\n/, '\n')
|
940
947
|
case type
|
@@ -992,7 +999,7 @@ class Ruby2Ruby < SexpProcessor
|
|
992
999
|
|
993
1000
|
body = []
|
994
1001
|
begin
|
995
|
-
code = process(exp.shift)
|
1002
|
+
code = process(exp.shift) unless exp.empty?
|
996
1003
|
body << code.chomp unless code.nil? or code.chomp.empty?
|
997
1004
|
end until exp.empty?
|
998
1005
|
|
data/test/test_ruby2ruby.rb
CHANGED
@@ -18,6 +18,8 @@ class R2RTestCase < ParseTreeTestCase
|
|
18
18
|
def self.generate_test klass, node, data, input_name, output_name
|
19
19
|
output_name = data.has_key?('Ruby2Ruby') ? 'Ruby2Ruby' : 'Ruby'
|
20
20
|
|
21
|
+
return if node.to_s =~ /19$/
|
22
|
+
|
21
23
|
klass.class_eval <<-EOM
|
22
24
|
def test_#{node}
|
23
25
|
pt = #{data[input_name].inspect}
|
@@ -101,19 +103,18 @@ class TestRuby2Ruby < R2RTestCase
|
|
101
103
|
end
|
102
104
|
|
103
105
|
def test_call_self_index
|
104
|
-
util_compare s(:call, nil, :[], s(:
|
106
|
+
util_compare s(:call, nil, :[], s(:lit, 42)), "self[42]"
|
105
107
|
end
|
106
108
|
|
107
109
|
def test_call_self_index_equals
|
108
|
-
util_compare(s(:call, nil, :[]=, s(:
|
110
|
+
util_compare(s(:call, nil, :[]=, s(:lit, 42), s(:lit, 24)),
|
109
111
|
"self[42] = 24")
|
110
112
|
end
|
111
113
|
|
112
114
|
def test_call_arglist_hash_first
|
113
115
|
inn = s(:call, nil, :method,
|
114
|
-
s(:
|
115
|
-
|
116
|
-
s(:call, nil, :b, s(:arglist))))
|
116
|
+
s(:hash, s(:lit, :a), s(:lit, 1)),
|
117
|
+
s(:call, nil, :b))
|
117
118
|
out = "method({ :a => 1 }, b)"
|
118
119
|
|
119
120
|
util_compare inn, out
|
@@ -121,10 +122,9 @@ class TestRuby2Ruby < R2RTestCase
|
|
121
122
|
|
122
123
|
def test_call_arglist_hash_first_last
|
123
124
|
inn = s(:call, nil, :method,
|
124
|
-
s(:
|
125
|
-
|
126
|
-
|
127
|
-
s(:hash, s(:lit, :c), s(:lit, 1))))
|
125
|
+
s(:hash, s(:lit, :a), s(:lit, 1)),
|
126
|
+
s(:call, nil, :b),
|
127
|
+
s(:hash, s(:lit, :c), s(:lit, 1)))
|
128
128
|
out = "method({ :a => 1 }, b, :c => 1)"
|
129
129
|
|
130
130
|
util_compare inn, out
|
@@ -132,9 +132,8 @@ class TestRuby2Ruby < R2RTestCase
|
|
132
132
|
|
133
133
|
def test_call_arglist_hash_last
|
134
134
|
inn = s(:call, nil, :method,
|
135
|
-
s(:
|
136
|
-
|
137
|
-
s(:hash, s(:lit, :a), s(:lit, 1))))
|
135
|
+
s(:call, nil, :b),
|
136
|
+
s(:hash, s(:lit, :a), s(:lit, 1)))
|
138
137
|
out = "method(b, :a => 1)"
|
139
138
|
|
140
139
|
util_compare inn, out
|
@@ -142,13 +141,12 @@ class TestRuby2Ruby < R2RTestCase
|
|
142
141
|
|
143
142
|
def test_call_arglist_if
|
144
143
|
inn = s(:call,
|
145
|
-
s(:call, nil, :a
|
144
|
+
s(:call, nil, :a),
|
146
145
|
:+,
|
147
|
-
s(:
|
148
|
-
s(:
|
149
|
-
|
150
|
-
|
151
|
-
s(:call, nil, :d, s(:arglist)))))
|
146
|
+
s(:if,
|
147
|
+
s(:call, nil, :b),
|
148
|
+
s(:call, nil, :c),
|
149
|
+
s(:call, nil, :d)))
|
152
150
|
|
153
151
|
out = "(a + (b ? (c) : (d)))"
|
154
152
|
util_compare inn, out
|
@@ -161,14 +159,14 @@ class TestRuby2Ruby < R2RTestCase
|
|
161
159
|
s(:array,
|
162
160
|
s(:splat,
|
163
161
|
s(:call,
|
164
|
-
s(:call, nil, :line
|
162
|
+
s(:call, nil, :line),
|
165
163
|
:split,
|
166
|
-
s(:
|
164
|
+
s(:lit, /\=/), s(:lit, 2))))),
|
167
165
|
s(:attrasgn,
|
168
166
|
s(:self),
|
169
167
|
:[]=,
|
170
|
-
s(:arglist, s(:lvar, :k),
|
171
|
-
|
168
|
+
s(:arglist, s(:lvar, :k)),
|
169
|
+
s(:call, s(:lvar, :v), :strip)))
|
172
170
|
|
173
171
|
out = "k, v = *line.split(/\\=/, 2)\nself[k] = v.strip\n"
|
174
172
|
|
@@ -181,15 +179,15 @@ class TestRuby2Ruby < R2RTestCase
|
|
181
179
|
s(:array,
|
182
180
|
s(:splat,
|
183
181
|
s(:call,
|
184
|
-
s(:call, nil, :line
|
182
|
+
s(:call, nil, :line),
|
185
183
|
:split,
|
186
|
-
s(:
|
184
|
+
s(:lit, /\=/), s(:lit, 2)))))
|
187
185
|
out = 'k, v = *line.split(/\\=/, 2)'
|
188
186
|
util_compare inn, out
|
189
187
|
end
|
190
188
|
|
191
189
|
def test_match3_asgn
|
192
|
-
inn = s(:match3, s(:lit, //), s(:lasgn, :y, s(:call, nil, :x
|
190
|
+
inn = s(:match3, s(:lit, //), s(:lasgn, :y, s(:call, nil, :x)))
|
193
191
|
out = "(y = x) =~ //"
|
194
192
|
# "y = x =~ //", which matches on x and assigns to y (not what sexp says).
|
195
193
|
util_compare inn, out
|
@@ -197,12 +195,11 @@ class TestRuby2Ruby < R2RTestCase
|
|
197
195
|
|
198
196
|
def test_splat_call
|
199
197
|
inn = s(:call, nil, :x,
|
200
|
-
s(:
|
201
|
-
s(:
|
202
|
-
s(:call,
|
203
|
-
|
204
|
-
|
205
|
-
s(:arglist, s(:lit, /\=/), s(:lit, 2))))))
|
198
|
+
s(:splat,
|
199
|
+
s(:call,
|
200
|
+
s(:call, nil, :line),
|
201
|
+
:split,
|
202
|
+
s(:lit, /\=/), s(:lit, 2))))
|
206
203
|
|
207
204
|
out = 'x(*line.split(/\=/, 2))'
|
208
205
|
util_compare inn, out
|
@@ -210,12 +207,12 @@ class TestRuby2Ruby < R2RTestCase
|
|
210
207
|
|
211
208
|
def test_resbody_block
|
212
209
|
inn = s(:rescue,
|
213
|
-
s(:call, nil, :x1
|
210
|
+
s(:call, nil, :x1),
|
214
211
|
s(:resbody,
|
215
212
|
s(:array),
|
216
213
|
s(:block,
|
217
|
-
s(:call, nil, :x2
|
218
|
-
s(:call, nil, :x3
|
214
|
+
s(:call, nil, :x2),
|
215
|
+
s(:call, nil, :x3))))
|
219
216
|
|
220
217
|
out = "begin\n x1\nrescue\n x2\n x3\nend"
|
221
218
|
util_compare inn, out
|
@@ -224,7 +221,7 @@ class TestRuby2Ruby < R2RTestCase
|
|
224
221
|
def test_resbody_short_with_begin_end
|
225
222
|
# "begin; blah; rescue; []; end"
|
226
223
|
inn = s(:rescue,
|
227
|
-
s(:call, nil, :blah
|
224
|
+
s(:call, nil, :blah),
|
228
225
|
s(:resbody, s(:array), s(:array)))
|
229
226
|
out = "blah rescue []"
|
230
227
|
util_compare inn, out
|
@@ -234,7 +231,7 @@ class TestRuby2Ruby < R2RTestCase
|
|
234
231
|
inn = s(:match3,
|
235
232
|
s(:dregx,
|
236
233
|
"abc",
|
237
|
-
s(:evstr, s(:call, nil, :x
|
234
|
+
s(:evstr, s(:call, nil, :x)),
|
238
235
|
s(:str, "def"),
|
239
236
|
4),
|
240
237
|
s(:str, "a"))
|
@@ -244,7 +241,7 @@ class TestRuby2Ruby < R2RTestCase
|
|
244
241
|
|
245
242
|
def test_resbody_short_with_rescue_args
|
246
243
|
inn = s(:rescue,
|
247
|
-
s(:call, nil, :blah
|
244
|
+
s(:call, nil, :blah),
|
248
245
|
s(:resbody, s(:array, s(:const, :A), s(:const, :B)), s(:array)))
|
249
246
|
out = "begin\n blah\nrescue A, B\n []\nend"
|
250
247
|
util_compare inn, out
|
@@ -256,9 +253,9 @@ class TestRuby2Ruby < R2RTestCase
|
|
256
253
|
# end
|
257
254
|
|
258
255
|
inn = s(:if, s(:lit, 42),
|
259
|
-
s(:call, s(:call, nil, :args
|
256
|
+
s(:call, s(:call, nil, :args),
|
260
257
|
:<<,
|
261
|
-
s(:
|
258
|
+
s(:hash, s(:lit, :key), s(:lit, 24))),
|
262
259
|
nil)
|
263
260
|
|
264
261
|
out = "(args << { :key => 24 }) if 42"
|
@@ -266,8 +263,14 @@ class TestRuby2Ruby < R2RTestCase
|
|
266
263
|
util_compare inn, out
|
267
264
|
end
|
268
265
|
|
266
|
+
def test_call_empty_hash
|
267
|
+
inn = s(:call, nil, :foo, s(:arglist, s(:hash)))
|
268
|
+
out = "foo({})"
|
269
|
+
util_compare inn, out
|
270
|
+
end
|
271
|
+
|
269
272
|
def test_if_empty
|
270
|
-
inn = s(:if, s(:call, nil, :x
|
273
|
+
inn = s(:if, s(:call, nil, :x), nil, nil)
|
271
274
|
out = "if x then\n # do nothing\nend"
|
272
275
|
util_compare inn, out
|
273
276
|
end
|
@@ -276,9 +279,9 @@ class TestRuby2Ruby < R2RTestCase
|
|
276
279
|
# log_entry = " \e[#{message_color}m#{message}\e[0m "
|
277
280
|
inn = s(:lasgn, :log_entry,
|
278
281
|
s(:dstr, " \e[",
|
279
|
-
s(:evstr, s(:call, nil, :message_color
|
282
|
+
s(:evstr, s(:call, nil, :message_color)),
|
280
283
|
s(:str, "m"),
|
281
|
-
s(:evstr, s(:call, nil, :message
|
284
|
+
s(:evstr, s(:call, nil, :message)),
|
282
285
|
s(:str, "\e[0m ")))
|
283
286
|
out = "log_entry = \" \e[#\{message_color}m#\{message}\e[0m \""
|
284
287
|
|
@@ -286,21 +289,21 @@ class TestRuby2Ruby < R2RTestCase
|
|
286
289
|
end
|
287
290
|
|
288
291
|
def test_class_comments
|
289
|
-
inn = s(:class, :Z, nil
|
292
|
+
inn = s(:class, :Z, nil)
|
290
293
|
inn.comments = "# x\n# y\n"
|
291
294
|
out = "# x\n# y\nclass Z\nend"
|
292
295
|
util_compare inn, out
|
293
296
|
end
|
294
297
|
|
295
298
|
def test_module_comments
|
296
|
-
inn = s(:module, :Z
|
299
|
+
inn = s(:module, :Z)
|
297
300
|
inn.comments = "# x\n# y\n"
|
298
301
|
out = "# x\n# y\nmodule Z\nend"
|
299
302
|
util_compare inn, out
|
300
303
|
end
|
301
304
|
|
302
305
|
def test_method_comments
|
303
|
-
inn = s(:defn, :z, s(:args), s(:
|
306
|
+
inn = s(:defn, :z, s(:args), s(:nil))
|
304
307
|
inn.comments = "# x\n# y\n"
|
305
308
|
out = "# x\n# y\ndef z\n # do nothing\nend"
|
306
309
|
util_compare inn, out
|
@@ -311,19 +314,19 @@ class TestRuby2Ruby < R2RTestCase
|
|
311
314
|
out = "begin\n 1\nensure\n 2\nend"
|
312
315
|
util_compare inn, out
|
313
316
|
end
|
314
|
-
|
317
|
+
|
315
318
|
def test_nested_ensure
|
316
319
|
inn = s(:ensure, s(:lit, 1), s(:ensure, s(:lit, 2), s(:lit, 3)))
|
317
320
|
out = "begin\n 1\nensure\n begin\n 2\n ensure\n 3\n end\nend"
|
318
321
|
util_compare inn, out
|
319
322
|
end
|
320
|
-
|
323
|
+
|
321
324
|
def test_nested_rescue
|
322
325
|
inn = s(:ensure, s(:lit, 1), s(:rescue, s(:lit, 2), s(:resbody, s(:array), s(:lit, 3))))
|
323
326
|
out = "begin\n 1\nensure\n 2 rescue 3\nend"
|
324
327
|
util_compare inn, out
|
325
328
|
end
|
326
|
-
|
329
|
+
|
327
330
|
def test_nested_rescue_exception
|
328
331
|
inn = s(:ensure, s(:lit, 1), s(:rescue, s(:lit, 2), s(:resbody, s(:array, s(:const, :Exception)), s(:lit, 3))))
|
329
332
|
out = "begin\n 1\nensure\n begin\n 2\n rescue Exception\n 3\n end\nend"
|
@@ -338,15 +341,15 @@ class TestRuby2Ruby < R2RTestCase
|
|
338
341
|
|
339
342
|
def test_rescue_block
|
340
343
|
inn = s(:rescue,
|
341
|
-
s(:call, nil, :alpha
|
342
|
-
s(:resbody, s(:array),
|
344
|
+
s(:call, nil, :alpha),
|
345
|
+
s(:resbody, s(:array),
|
343
346
|
s(:block,
|
344
|
-
s(:call, nil, :beta
|
345
|
-
s(:call, nil, :gamma
|
347
|
+
s(:call, nil, :beta),
|
348
|
+
s(:call, nil, :gamma))))
|
346
349
|
out = "begin\n alpha\nrescue\n beta\n gamma\nend"
|
347
350
|
util_compare inn, out
|
348
351
|
end
|
349
|
-
|
352
|
+
|
350
353
|
def util_compare sexp, expected_ruby, expected_eval = nil
|
351
354
|
assert_equal expected_ruby, @processor.process(sexp)
|
352
355
|
assert_equal expected_eval, eval(expected_ruby) if expected_eval
|
@@ -355,7 +358,7 @@ class TestRuby2Ruby < R2RTestCase
|
|
355
358
|
def util_thingy(type)
|
356
359
|
s(type,
|
357
360
|
'a"b',
|
358
|
-
s(:evstr, s(:call, s(:lit, 1), :+, s(:
|
361
|
+
s(:evstr, s(:call, s(:lit, 1), :+, s(:lit, 1))),
|
359
362
|
s(:str, 'c"d/e'))
|
360
363
|
end
|
361
364
|
end
|
@@ -381,7 +384,8 @@ def silent_eval ruby
|
|
381
384
|
end
|
382
385
|
|
383
386
|
def morph_and_eval src, from, to, processor
|
384
|
-
new_src = processor.new.process(
|
387
|
+
new_src = processor.new.process(Ruby18Parser.new.process(src.sub(from, to)))
|
388
|
+
|
385
389
|
silent_eval new_src
|
386
390
|
new_src
|
387
391
|
end
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,13 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby2ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: -533234434
|
5
|
+
prerelease: 6
|
6
6
|
segments:
|
7
|
+
- 2
|
8
|
+
- 0
|
9
|
+
- 0
|
10
|
+
- b
|
7
11
|
- 1
|
8
|
-
|
9
|
-
- 1
|
10
|
-
version: 1.3.1
|
12
|
+
version: 2.0.0.b1
|
11
13
|
platform: ruby
|
12
14
|
authors:
|
13
15
|
- Ryan Davis
|
@@ -36,7 +38,7 @@ cert_chain:
|
|
36
38
|
FBHgymkyj/AOSqKRIpXPhjC6
|
37
39
|
-----END CERTIFICATE-----
|
38
40
|
|
39
|
-
date:
|
41
|
+
date: 2012-07-28 00:00:00 Z
|
40
42
|
dependencies:
|
41
43
|
- !ruby/object:Gem::Dependency
|
42
44
|
name: sexp_processor
|
@@ -46,11 +48,11 @@ dependencies:
|
|
46
48
|
requirements:
|
47
49
|
- - ~>
|
48
50
|
- !ruby/object:Gem::Version
|
49
|
-
hash:
|
51
|
+
hash: 27
|
50
52
|
segments:
|
51
|
-
-
|
53
|
+
- 4
|
52
54
|
- 0
|
53
|
-
version: "
|
55
|
+
version: "4.0"
|
54
56
|
type: :runtime
|
55
57
|
version_requirements: *id001
|
56
58
|
- !ruby/object:Gem::Dependency
|
@@ -61,11 +63,14 @@ dependencies:
|
|
61
63
|
requirements:
|
62
64
|
- - ~>
|
63
65
|
- !ruby/object:Gem::Version
|
64
|
-
hash:
|
66
|
+
hash: -533251372
|
65
67
|
segments:
|
66
|
-
-
|
68
|
+
- 3
|
69
|
+
- 0
|
67
70
|
- 0
|
68
|
-
|
71
|
+
- a
|
72
|
+
- 4
|
73
|
+
version: 3.0.0.a4
|
69
74
|
type: :runtime
|
70
75
|
version_requirements: *id002
|
71
76
|
- !ruby/object:Gem::Dependency
|
@@ -76,26 +81,26 @@ dependencies:
|
|
76
81
|
requirements:
|
77
82
|
- - ~>
|
78
83
|
- !ruby/object:Gem::Version
|
79
|
-
hash:
|
84
|
+
hash: 3
|
80
85
|
segments:
|
86
|
+
- 3
|
81
87
|
- 2
|
82
|
-
|
83
|
-
version: "2.5"
|
88
|
+
version: "3.2"
|
84
89
|
type: :development
|
85
90
|
version_requirements: *id003
|
86
91
|
- !ruby/object:Gem::Dependency
|
87
|
-
name:
|
92
|
+
name: rdoc
|
88
93
|
prerelease: false
|
89
94
|
requirement: &id004 !ruby/object:Gem::Requirement
|
90
95
|
none: false
|
91
96
|
requirements:
|
92
97
|
- - ~>
|
93
98
|
- !ruby/object:Gem::Version
|
94
|
-
hash:
|
99
|
+
hash: 19
|
95
100
|
segments:
|
96
101
|
- 3
|
97
|
-
-
|
98
|
-
version: "3.
|
102
|
+
- 10
|
103
|
+
version: "3.10"
|
99
104
|
type: :development
|
100
105
|
version_requirements: *id004
|
101
106
|
- !ruby/object:Gem::Dependency
|
@@ -106,11 +111,11 @@ dependencies:
|
|
106
111
|
requirements:
|
107
112
|
- - ~>
|
108
113
|
- !ruby/object:Gem::Version
|
109
|
-
hash:
|
114
|
+
hash: 7
|
110
115
|
segments:
|
111
|
-
-
|
112
|
-
-
|
113
|
-
version: "
|
116
|
+
- 3
|
117
|
+
- 0
|
118
|
+
version: "3.0"
|
114
119
|
type: :development
|
115
120
|
version_requirements: *id005
|
116
121
|
description: |-
|
@@ -158,16 +163,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
158
163
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
159
164
|
none: false
|
160
165
|
requirements:
|
161
|
-
- - "
|
166
|
+
- - ">"
|
162
167
|
- !ruby/object:Gem::Version
|
163
|
-
hash:
|
168
|
+
hash: 25
|
164
169
|
segments:
|
165
|
-
-
|
166
|
-
|
170
|
+
- 1
|
171
|
+
- 3
|
172
|
+
- 1
|
173
|
+
version: 1.3.1
|
167
174
|
requirements: []
|
168
175
|
|
169
176
|
rubyforge_project: seattlerb
|
170
|
-
rubygems_version: 1.8.
|
177
|
+
rubygems_version: 1.8.24
|
171
178
|
signing_key:
|
172
179
|
specification_version: 3
|
173
180
|
summary: ruby2ruby provides a means of generating pure ruby code easily from RubyParser compatible Sexps
|
metadata.gz.sig
CHANGED