ruby2ruby 2.2.0 → 2.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/History.txt +8 -0
- data/lib/ruby2ruby.rb +31 -4
- data/test/test_ruby2ruby.rb +34 -1
- metadata +14 -15
- metadata.gz.sig +0 -0
- data/.gemtest +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eb8caf02a8d2b2af6ef49ddd52a55f62e4dc683a
|
4
|
+
data.tar.gz: bbdd946629c332a35d65d9919bad429510e64218
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2ac5b2af3ec0b14d74abbb17f4247b2c590bb8072b2adfae590a16a59cd5b78ef746585ff6561f56d28250407fcbdf6d565aa96934f6536280c936a5c639ceef
|
7
|
+
data.tar.gz: 5b77706f664f28b47927fa6a81615719cc0ca8deedfcd090d541a80c53989292f6311794d41bbec7f1b9c328f5da167dac98567f9cc382650fbc1b5f07b623e3
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/History.txt
CHANGED
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.
|
34
|
+
VERSION = "2.3.0" # :nodoc:
|
35
35
|
|
36
36
|
# cutoff for one-liners
|
37
37
|
LINE_LENGTH = 78
|
@@ -218,7 +218,7 @@ class Ruby2Ruby < SexpProcessor
|
|
218
218
|
end
|
219
219
|
end
|
220
220
|
|
221
|
-
def process_call(exp) # :nodoc:
|
221
|
+
def process_call(exp, safe_call = false) # :nodoc:
|
222
222
|
receiver_node_type = exp.first.nil? ? nil : exp.first.first
|
223
223
|
receiver = process exp.shift
|
224
224
|
receiver = "(#{receiver})" if ASSIGN_NODES.include? receiver_node_type
|
@@ -254,7 +254,11 @@ class Ruby2Ruby < SexpProcessor
|
|
254
254
|
|
255
255
|
case name
|
256
256
|
when *BINARY then
|
257
|
-
|
257
|
+
if safe_call
|
258
|
+
"#{receiver}&.#{name}(#{args.join(', ')})"
|
259
|
+
else
|
260
|
+
"(#{receiver} #{name} #{args.join(', ')})"
|
261
|
+
end
|
258
262
|
when :[] then
|
259
263
|
receiver ||= "self"
|
260
264
|
"#{receiver}[#{args.join(', ')}]"
|
@@ -271,7 +275,8 @@ class Ruby2Ruby < SexpProcessor
|
|
271
275
|
else
|
272
276
|
args = nil if args.empty?
|
273
277
|
args = "(#{args.join(', ')})" if args
|
274
|
-
receiver = "#{receiver}." if receiver
|
278
|
+
receiver = "#{receiver}." if receiver and not safe_call
|
279
|
+
receiver = "#{receiver}&." if receiver and safe_call
|
275
280
|
|
276
281
|
"#{receiver}#{name}#{args}"
|
277
282
|
end
|
@@ -279,6 +284,10 @@ class Ruby2Ruby < SexpProcessor
|
|
279
284
|
@calls.pop
|
280
285
|
end
|
281
286
|
|
287
|
+
def process_safe_call(exp) # :nodoc:
|
288
|
+
process_call(exp, :safe)
|
289
|
+
end
|
290
|
+
|
282
291
|
def process_case(exp) # :nodoc:
|
283
292
|
result = []
|
284
293
|
expr = process exp.shift
|
@@ -827,6 +836,24 @@ class Ruby2Ruby < SexpProcessor
|
|
827
836
|
end
|
828
837
|
end
|
829
838
|
|
839
|
+
def process_safe_attrasgn(exp) # :nodoc:
|
840
|
+
receiver = process exp.shift
|
841
|
+
name = exp.shift
|
842
|
+
rhs = exp.pop
|
843
|
+
args = exp.pop # should be nil
|
844
|
+
exp.clear
|
845
|
+
|
846
|
+
raise "dunno what to do: #{args.inspect}" if args
|
847
|
+
|
848
|
+
name = name.to_s.sub(/=$/, '')
|
849
|
+
|
850
|
+
if rhs && rhs != s(:arglist) then
|
851
|
+
"#{receiver}&.#{name} = #{process(rhs)}"
|
852
|
+
else
|
853
|
+
raise "dunno what to do: #{rhs.inspect}"
|
854
|
+
end
|
855
|
+
end
|
856
|
+
|
830
857
|
def process_sclass(exp) # :nodoc:
|
831
858
|
"class << #{process(exp.shift)}\n#{indent(process_block(exp))}\nend"
|
832
859
|
end
|
data/test/test_ruby2ruby.rb
CHANGED
@@ -19,7 +19,7 @@ class R2RTestCase < ParseTreeTestCase
|
|
19
19
|
def self.generate_test klass, node, data, input_name, output_name
|
20
20
|
output_name = data.has_key?('Ruby2Ruby') ? 'Ruby2Ruby' : 'Ruby'
|
21
21
|
|
22
|
-
return if node.to_s =~ /(str_question|not|bang).*_(19|20|21|22)$/
|
22
|
+
return if node.to_s =~ /(str_question|not|bang).*_(19|20|21|22|23)$/
|
23
23
|
|
24
24
|
klass.class_eval <<-EOM
|
25
25
|
def test_#{node}
|
@@ -379,6 +379,39 @@ class TestRuby2Ruby < R2RTestCase
|
|
379
379
|
util_compare inn, out
|
380
380
|
end
|
381
381
|
|
382
|
+
def test_safe_attrasgn
|
383
|
+
inn = s(:safe_attrasgn,
|
384
|
+
s(:call, nil, :x),
|
385
|
+
:y=,
|
386
|
+
s(:lit, 1))
|
387
|
+
|
388
|
+
out = "x&.y = 1"
|
389
|
+
|
390
|
+
util_compare inn, out
|
391
|
+
end
|
392
|
+
|
393
|
+
def test_safe_call
|
394
|
+
inn = s(:safe_call,
|
395
|
+
s(:safe_call,
|
396
|
+
s(:call, nil, :x),
|
397
|
+
:y),
|
398
|
+
:z,
|
399
|
+
s(:lit, 1))
|
400
|
+
|
401
|
+
out ="x&.y&.z(1)"
|
402
|
+
util_compare inn, out
|
403
|
+
end
|
404
|
+
|
405
|
+
def test_safe_call_binary
|
406
|
+
inn = s(:safe_call,
|
407
|
+
s(:call, nil, :x),
|
408
|
+
:>,
|
409
|
+
s(:lit, 1))
|
410
|
+
|
411
|
+
out = "x&.>(1)"
|
412
|
+
util_compare inn, out
|
413
|
+
end
|
414
|
+
|
382
415
|
def test_splat_call
|
383
416
|
inn = s(:call, nil, :x,
|
384
417
|
s(:splat,
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby2ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Davis
|
@@ -10,9 +10,9 @@ bindir: bin
|
|
10
10
|
cert_chain:
|
11
11
|
- |
|
12
12
|
-----BEGIN CERTIFICATE-----
|
13
|
-
|
13
|
+
MIIDPjCCAiagAwIBAgIBAzANBgkqhkiG9w0BAQUFADBFMRMwEQYDVQQDDApyeWFu
|
14
14
|
ZC1ydWJ5MRkwFwYKCZImiZPyLGQBGRYJemVuc3BpZGVyMRMwEQYKCZImiZPyLGQB
|
15
|
-
|
15
|
+
GRYDY29tMB4XDTE1MDkxOTIwNTEyMloXDTE2MDkxODIwNTEyMlowRTETMBEGA1UE
|
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/hMA0GCSqGSIb3DQEBBQUAA4IB
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
25
|
+
AQB+Hx8xUgrpZa4P8H8gR8zme5kISwQrG80MbpqJV6/G3/ZicRFhN5sjwu0uHGue
|
26
|
+
bd9Cymf6oIRwHVarJux2M32T6bL07Hmi07w2QaPc3MnMKB/D46SRZ2JSSGPFRBTc
|
27
|
+
SilobMRoGs/7B15uGFUEnNrCB/ltMqhwwSx1r++UQPfeySHEV9uqu03E5Vb7J37O
|
28
|
+
2Er6PLXHRiYsIycD1LkMi6YnixdITRHmrqJYE2rsjaIfpIehiusVAPHkNf7qbpHq
|
29
|
+
qx3h45R1CAsObX0SQDIT+rRbQrtKz1GHIZTOFYvEJjUY1XmRTZupD3CJ8Q7sDqSy
|
30
|
+
NLq5jm1fq6Y9Uolu3RJbmycf
|
31
31
|
-----END CERTIFICATE-----
|
32
|
-
date:
|
32
|
+
date: 2016-02-19 00:00:00.000000000 Z
|
33
33
|
dependencies:
|
34
34
|
- !ruby/object:Gem::Dependency
|
35
35
|
name: sexp_processor
|
@@ -65,14 +65,14 @@ dependencies:
|
|
65
65
|
requirements:
|
66
66
|
- - ~>
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '5.
|
68
|
+
version: '5.8'
|
69
69
|
type: :development
|
70
70
|
prerelease: false
|
71
71
|
version_requirements: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - ~>
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '5.
|
75
|
+
version: '5.8'
|
76
76
|
- !ruby/object:Gem::Dependency
|
77
77
|
name: rdoc
|
78
78
|
requirement: !ruby/object:Gem::Requirement
|
@@ -93,14 +93,14 @@ dependencies:
|
|
93
93
|
requirements:
|
94
94
|
- - ~>
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: '3.
|
96
|
+
version: '3.14'
|
97
97
|
type: :development
|
98
98
|
prerelease: false
|
99
99
|
version_requirements: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - ~>
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: '3.
|
103
|
+
version: '3.14'
|
104
104
|
description: |-
|
105
105
|
ruby2ruby provides a means of generating pure ruby code easily from
|
106
106
|
RubyParser compatible Sexps. This makes making dynamic language
|
@@ -116,7 +116,6 @@ extra_rdoc_files:
|
|
116
116
|
- README.txt
|
117
117
|
files:
|
118
118
|
- .autotest
|
119
|
-
- .gemtest
|
120
119
|
- History.txt
|
121
120
|
- Manifest.txt
|
122
121
|
- README.txt
|
metadata.gz.sig
CHANGED
Binary file
|
data/.gemtest
DELETED
File without changes
|