ruby2ruby 2.1.3 → 2.1.4
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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/History.txt +10 -0
- data/lib/ruby2ruby.rb +33 -7
- data/test/test_ruby2ruby.rb +61 -1
- metadata +6 -7
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d5a340729045b8139f699cb585b8fcc302b8282f
|
4
|
+
data.tar.gz: cbfd1a1d811f65485c8175d33854ca21c80dad94
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2af547a9f8c9534c09e3b60f7c03e38d2342b9f63643a518bb30ee0126d4b691313f36e7a61ede70d4d385216493cdf840aa99ad032e792a87502fe669b94648
|
7
|
+
data.tar.gz: 04c75aab59b408c62a1a34eea38639cba985ca9d8286ca355def1e01cdb4b1ca07377dbfb4d4def1695e1198ef3e927a2cf2f90cdd47f568bf66b4a90800771e
|
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.1.
|
34
|
+
VERSION = "2.1.4" # :nodoc:
|
35
35
|
|
36
36
|
# cutoff for one-liners
|
37
37
|
LINE_LENGTH = 78
|
@@ -60,6 +60,24 @@ class Ruby2Ruby < SexpProcessor
|
|
60
60
|
:rescue,
|
61
61
|
]
|
62
62
|
|
63
|
+
##
|
64
|
+
# Some sexp types are OK without parens when appearing as hash values.
|
65
|
+
# This list can include `:call`s because they're always printed with parens
|
66
|
+
# around their arguments. For example:
|
67
|
+
#
|
68
|
+
# { :foo => (bar("baz")) } # The outer parens are unnecessary
|
69
|
+
# { :foo => bar("baz") } # This is the normal code style
|
70
|
+
|
71
|
+
HASH_VAL_NO_PAREN = [
|
72
|
+
:call,
|
73
|
+
:false,
|
74
|
+
:lit,
|
75
|
+
:lvar,
|
76
|
+
:nil,
|
77
|
+
:str,
|
78
|
+
:true
|
79
|
+
]
|
80
|
+
|
63
81
|
def initialize # :nodoc:
|
64
82
|
super
|
65
83
|
@indent = " "
|
@@ -481,13 +499,21 @@ class Ruby2Ruby < SexpProcessor
|
|
481
499
|
result = []
|
482
500
|
|
483
501
|
until exp.empty?
|
484
|
-
|
485
|
-
|
486
|
-
|
487
|
-
|
488
|
-
|
502
|
+
s = exp.shift
|
503
|
+
t = s.sexp_type
|
504
|
+
lhs = process s
|
505
|
+
|
506
|
+
case t
|
507
|
+
when :kwsplat then
|
508
|
+
result << lhs
|
509
|
+
else
|
510
|
+
rhs = exp.shift
|
511
|
+
t = rhs.first
|
512
|
+
rhs = process rhs
|
513
|
+
rhs = "(#{rhs})" unless HASH_VAL_NO_PAREN.include? t
|
489
514
|
|
490
|
-
|
515
|
+
result << "#{lhs} => #{rhs}"
|
516
|
+
end
|
491
517
|
end
|
492
518
|
|
493
519
|
return result.empty? ? "{}" : "{ #{result.join(', ')} }"
|
data/test/test_ruby2ruby.rb
CHANGED
@@ -80,6 +80,49 @@ class TestRuby2Ruby < R2RTestCase
|
|
80
80
|
assert_equal exp, eval(out)
|
81
81
|
end
|
82
82
|
|
83
|
+
def test_hash_parens_str
|
84
|
+
inn = s(:hash, s(:lit, :k), s(:str, "banana"))
|
85
|
+
out = '{ :k => "banana" }'
|
86
|
+
util_compare inn, out
|
87
|
+
end
|
88
|
+
|
89
|
+
def test_hash_parens_lit
|
90
|
+
inn = s(:hash, s(:lit, :k), s(:lit, 0.07))
|
91
|
+
out = "{ :k => 0.07 }"
|
92
|
+
util_compare inn, out
|
93
|
+
end
|
94
|
+
|
95
|
+
def test_hash_parens_bool
|
96
|
+
inn = s(:hash, s(:lit, :k), s(:true))
|
97
|
+
out = "{ :k => true }"
|
98
|
+
util_compare inn, out
|
99
|
+
end
|
100
|
+
|
101
|
+
def test_hash_parens_nil
|
102
|
+
inn = s(:hash, s(:lit, :k), s(:nil))
|
103
|
+
out = "{ :k => nil }"
|
104
|
+
util_compare inn, out
|
105
|
+
end
|
106
|
+
|
107
|
+
def test_hash_parens_lvar
|
108
|
+
inn = s(:hash, s(:lit, :k), s(:lvar, :x))
|
109
|
+
out = "{ :k => x }"
|
110
|
+
util_compare inn, out
|
111
|
+
end
|
112
|
+
|
113
|
+
def test_hash_parens_call
|
114
|
+
inn = s(:hash, s(:lit, :k), s(:call, nil, :foo, s(:lit, :bar)))
|
115
|
+
out = "{ :k => foo(:bar) }"
|
116
|
+
util_compare inn, out
|
117
|
+
end
|
118
|
+
|
119
|
+
def test_hash_parens_iter
|
120
|
+
iter = s(:iter, s(:call, nil, :foo), s(:args), s(:str, "bar"))
|
121
|
+
inn = s(:hash, s(:lit, :k), iter)
|
122
|
+
out = '{ :k => (foo { "bar" }) }'
|
123
|
+
util_compare inn, out
|
124
|
+
end
|
125
|
+
|
83
126
|
def test_and_alias
|
84
127
|
inn = s(:and, s(:true), s(:alias, s(:lit, :a), s(:lit, :b)))
|
85
128
|
out = "true and (alias :a :b)"
|
@@ -168,8 +211,25 @@ class TestRuby2Ruby < R2RTestCase
|
|
168
211
|
end
|
169
212
|
|
170
213
|
def test_call_kwsplat
|
171
|
-
inn = s(:call, nil, :test_splat, s(:kwsplat, s(:call, nil, :testing)))
|
214
|
+
inn = s(:call, nil, :test_splat, s(:hash, s(:kwsplat, s(:call, nil, :testing))))
|
172
215
|
out = "test_splat(**testing)"
|
216
|
+
|
217
|
+
util_compare inn, out
|
218
|
+
end
|
219
|
+
|
220
|
+
def test_call_arg_assoc_kwsplat
|
221
|
+
inn = s(:call, nil, :f,
|
222
|
+
s(:lit, 1),
|
223
|
+
s(:hash, s(:lit, :kw), s(:lit, 2), s(:kwsplat, s(:lit, 3))))
|
224
|
+
out = "f(1, :kw => 2, **3)"
|
225
|
+
|
226
|
+
util_compare inn, out
|
227
|
+
end
|
228
|
+
|
229
|
+
def test_call_kwsplat_x
|
230
|
+
inn = s(:call, nil, :a, s(:hash, s(:kwsplat, s(:lit, 1))))
|
231
|
+
out = "a(**1)"
|
232
|
+
|
173
233
|
util_compare inn, out
|
174
234
|
end
|
175
235
|
|
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.1.
|
4
|
+
version: 2.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Davis
|
@@ -29,7 +29,7 @@ cert_chain:
|
|
29
29
|
xJcC6UN6NHMOVMyAXsr2HR0gRRx4ofN1LoP2KhXzSr8UMvQYlwPmE0N5GQv1b5AO
|
30
30
|
VpzF30vNaJK6ZT7xlIsIlwmH
|
31
31
|
-----END CERTIFICATE-----
|
32
|
-
date:
|
32
|
+
date: 2015-04-13 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.6'
|
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.6'
|
76
76
|
- !ruby/object:Gem::Dependency
|
77
77
|
name: rdoc
|
78
78
|
requirement: !ruby/object:Gem::Requirement
|
@@ -146,10 +146,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
146
146
|
version: '0'
|
147
147
|
requirements: []
|
148
148
|
rubyforge_project:
|
149
|
-
rubygems_version: 2.4.
|
149
|
+
rubygems_version: 2.4.5
|
150
150
|
signing_key:
|
151
151
|
specification_version: 4
|
152
152
|
summary: ruby2ruby provides a means of generating pure ruby code easily from RubyParser
|
153
153
|
compatible Sexps
|
154
|
-
test_files:
|
155
|
-
- test/test_ruby2ruby.rb
|
154
|
+
test_files: []
|
metadata.gz.sig
CHANGED
Binary file
|