ruby2ruby 2.4.1 → 2.4.2
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 +1 -2
- data.tar.gz.sig +0 -0
- data/History.rdoc +8 -0
- data/Rakefile +3 -10
- data/bin/r2r_show +1 -2
- data/lib/ruby2ruby.rb +34 -36
- data/test/test_ruby2ruby.rb +26 -9
- metadata +22 -17
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 831b366b64498b5f2783288fbccbf4feac9c87b80ab472f1d7561fb3c1a9a807
|
4
|
+
data.tar.gz: a0a44de2c917acb356f92b0fb81c9bb97b68f255810b91218fb4ef4a57f7bd8a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 766278dc4ca1886b5a9e5dca83f2d025d21d16ec100423d784ad7992dee41f0fd1573a82c2535ddd592e278b109099dcc44d9663a4e33d5a7116c6f7e9f4df04
|
7
|
+
data.tar.gz: 44875a9e97d38517f51adc6f16015d50f94d4daf854286f6ebc73b8f7dfb9fc446fb98408ac76680abfafe8746961177e47b1f16b794e59586d097ce137ef465
|
checksums.yaml.gz.sig
CHANGED
@@ -1,2 +1 @@
|
|
1
|
-
|
2
|
-
P��7�7�����4�����#�fS���Y}f�{�p���܅��hh+��.9/s�����`M�t]^;�8=���^p�* �@ЦSo��I
|
1
|
+
�\��ܰ�|a�*�?���������h/%ݦ��:*yep��`��I3�9�����L�Xg�fb2�j���\�'�����Y��t��i!*�}��Ԩ��;���(��\^�U'0z=�3/|T]�}�Ya���L��p̕��a�Q�����
|
data.tar.gz.sig
CHANGED
Binary file
|
data/History.rdoc
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
=== 4.12.0 / 2019-03-12
|
2
|
+
|
3
|
+
* 3 bug fixes:
|
4
|
+
|
5
|
+
* Fixed sexp_body to return empty sexp instead of nil when using STRICT_SEXP.
|
6
|
+
* STRICT_SEXP=4+ fails w/ current use of concat. Removed concat from strictness for now.
|
7
|
+
* Use concat internally instead of splat. Some people have 20000 node sexps! (presidentbeef)
|
8
|
+
|
1
9
|
=== 2.4.1 / 2018-02-15
|
2
10
|
|
3
11
|
* 2 minor enhancements:
|
data/Rakefile
CHANGED
@@ -30,6 +30,8 @@ def process ruby, file="stdin"
|
|
30
30
|
begin
|
31
31
|
sexp = parser.process(ruby, file)
|
32
32
|
|
33
|
+
pp sexp if ENV["SEXP"]
|
34
|
+
|
33
35
|
ruby2ruby.process(sexp)
|
34
36
|
rescue Interrupt => e
|
35
37
|
raise e
|
@@ -41,7 +43,7 @@ task :stress do
|
|
41
43
|
$: << "../../ruby_parser/dev/lib"
|
42
44
|
require "pp"
|
43
45
|
|
44
|
-
files = Dir["../../*/dev/**/*.rb"]
|
46
|
+
files = Dir["../../*/dev/**/*.rb"].reject { |s| s =~ %r%/gems/% }
|
45
47
|
|
46
48
|
warn "Stress testing against #{files.size} files"
|
47
49
|
|
@@ -65,15 +67,6 @@ end
|
|
65
67
|
task :debug => :isolate do
|
66
68
|
ENV["V"] ||= "18"
|
67
69
|
|
68
|
-
$: << "lib"
|
69
|
-
require 'ruby_parser'
|
70
|
-
|
71
|
-
parser = if ENV["V"] == "18" then
|
72
|
-
Ruby18Parser.new
|
73
|
-
else
|
74
|
-
Ruby19Parser.new
|
75
|
-
end
|
76
|
-
|
77
70
|
file = ENV["F"] || ENV["FILE"]
|
78
71
|
|
79
72
|
ruby = if file then
|
data/bin/r2r_show
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.4.
|
34
|
+
VERSION = "2.4.2" # :nodoc:
|
35
35
|
|
36
36
|
# cutoff for one-liners
|
37
37
|
LINE_LENGTH = 78
|
@@ -677,44 +677,42 @@ class Ruby2Ruby < SexpProcessor
|
|
677
677
|
end
|
678
678
|
|
679
679
|
def process_masgn(exp) # :nodoc:
|
680
|
-
|
681
|
-
|
682
|
-
|
683
|
-
|
684
|
-
|
685
|
-
|
686
|
-
|
687
|
-
|
688
|
-
|
689
|
-
|
690
|
-
|
691
|
-
|
692
|
-
|
693
|
-
|
694
|
-
|
695
|
-
|
696
|
-
|
697
|
-
|
698
|
-
|
699
|
-
|
680
|
+
_, (type, *), * = exp # ugly, but STRICT_SEXP=1+ requires this
|
681
|
+
|
682
|
+
if type == :array then
|
683
|
+
_, lhs, rhs = exp
|
684
|
+
|
685
|
+
case exp.length
|
686
|
+
when 3 then # a, b = c, d
|
687
|
+
lhs = lhs.sexp_body.map { |e|
|
688
|
+
process e
|
689
|
+
}
|
690
|
+
|
691
|
+
rhs = case rhs && rhs.sexp_type
|
692
|
+
when :array then # a, b = [c, d]
|
693
|
+
process(rhs)[1..-2]
|
694
|
+
else # a, b = c
|
695
|
+
process rhs
|
696
|
+
end
|
697
|
+
"%s = %s" % [lhs.join(", "), rhs]
|
698
|
+
when 2 then # a, (b, c) = ...
|
699
|
+
"(%s)" % [process(lhs)[1..-2]]
|
700
700
|
else
|
701
|
-
raise "
|
701
|
+
raise "unknown masgn length: %p" % [exp]
|
702
702
|
end
|
703
|
+
else # a { |(b, c)| ... }
|
704
|
+
lhs = exp.sexp_body.map { |e|
|
705
|
+
case e
|
706
|
+
when Symbol then
|
707
|
+
e
|
708
|
+
when Sexp then
|
709
|
+
process e
|
710
|
+
else
|
711
|
+
raise "unknown masgn type: %p" % [e]
|
712
|
+
end
|
713
|
+
}
|
703
714
|
|
704
|
-
|
705
|
-
t = rhs.sexp_type
|
706
|
-
rhs = process rhs
|
707
|
-
rhs = rhs[1..-2] if t == :array # FIX: bad? I dunno
|
708
|
-
return "#{lhs.join(", ")} = #{rhs}"
|
709
|
-
else
|
710
|
-
return lhs.join(", ")
|
711
|
-
end
|
712
|
-
when Symbol then # block arg list w/ masgn
|
713
|
-
result = exp.join ", "
|
714
|
-
exp.clear
|
715
|
-
"(#{result})"
|
716
|
-
else
|
717
|
-
raise "unknown masgn: #{exp.inspect}"
|
715
|
+
"(%s)" % [lhs.join(", ")]
|
718
716
|
end
|
719
717
|
end
|
720
718
|
|
data/test/test_ruby2ruby.rb
CHANGED
@@ -258,6 +258,29 @@ class TestRuby2Ruby < R2RTestCase
|
|
258
258
|
assert_parse inn, out
|
259
259
|
end
|
260
260
|
|
261
|
+
def assert_masgn exp, *args
|
262
|
+
inn = s(:iter, s(:call, nil, :a), s(:args, *args))
|
263
|
+
out = "a { |#{exp}| }"
|
264
|
+
assert_parse inn, out
|
265
|
+
end
|
266
|
+
|
267
|
+
def test_iter_masgn_double_bug
|
268
|
+
assert_masgn("b",
|
269
|
+
:b)
|
270
|
+
assert_masgn("b, c",
|
271
|
+
:b, :c)
|
272
|
+
assert_masgn("(b, c)",
|
273
|
+
s(:masgn, :b, :c))
|
274
|
+
assert_masgn("(b, c), d",
|
275
|
+
s(:masgn, :b, :c), :d)
|
276
|
+
assert_masgn("b, (c, d), e",
|
277
|
+
:b, s(:masgn, :c, :d), :e)
|
278
|
+
assert_masgn("(b, (c, d), e), f",
|
279
|
+
s(:masgn, :b, s(:masgn, :c, :d), :e), :f)
|
280
|
+
assert_masgn("(((b, c), d, e), f), g",
|
281
|
+
s(:masgn, s(:masgn, s(:masgn, :b, :c), :d, :e), :f), :g)
|
282
|
+
end
|
283
|
+
|
261
284
|
def test_attr_writer_double
|
262
285
|
inn = s(:defn, :same=, s(:args, :o),
|
263
286
|
s(:iasgn, :@same, s(:lvar, :o)), s(:iasgn, :@diff, s(:lvar, :o)))
|
@@ -762,17 +785,11 @@ class TestRuby2Ruby < R2RTestCase
|
|
762
785
|
rb2 = "a if (not b)"
|
763
786
|
rb3 = "a if ! b"
|
764
787
|
|
765
|
-
assert_parse
|
766
|
-
assert_parse Ruby19Parser.new.parse(rb1), rb1
|
767
|
-
assert_parse Ruby25Parser.new.parse(rb1), rb1
|
788
|
+
assert_parse RubyParser.new.parse(rb1), rb1
|
768
789
|
|
769
|
-
assert_parse
|
770
|
-
assert_parse Ruby19Parser.new.parse(rb2), rb1
|
771
|
-
assert_parse Ruby25Parser.new.parse(rb2), rb1
|
790
|
+
assert_parse RubyParser.new.parse(rb2), rb1
|
772
791
|
|
773
|
-
assert_parse
|
774
|
-
assert_parse Ruby19Parser.new.parse(rb3), rb1
|
775
|
-
assert_parse Ruby25Parser.new.parse(rb3), rb1
|
792
|
+
assert_parse RubyParser.new.parse(rb3), rb1
|
776
793
|
end
|
777
794
|
|
778
795
|
def assert_parse sexp, expected_ruby, expected_eval = nil
|
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.
|
4
|
+
version: 2.4.2
|
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
|
+
MIIDPjCCAiagAwIBAgIBAzANBgkqhkiG9w0BAQsFADBFMRMwEQYDVQQDDApyeWFu
|
14
14
|
ZC1ydWJ5MRkwFwYKCZImiZPyLGQBGRYJemVuc3BpZGVyMRMwEQYKCZImiZPyLGQB
|
15
|
-
|
15
|
+
GRYDY29tMB4XDTE4MTIwNDIxMzAxNFoXDTE5MTIwNDIxMzAxNFowRTETMBEGA1UE
|
16
16
|
AwwKcnlhbmQtcnVieTEZMBcGCgmSJomT8ixkARkWCXplbnNwaWRlcjETMBEGCgmS
|
17
17
|
JomT8ixkARkWA2NvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALda
|
18
18
|
b9DCgK+627gPJkB6XfjZ1itoOQvpqH1EXScSaba9/S2VF22VYQbXU1xQXL/WzCkx
|
@@ -21,15 +21,15 @@ cert_chain:
|
|
21
21
|
GiadM9GHRaDiaxuX0cIUBj19T01mVE2iymf9I6bEsiayK/n6QujtyCbTWsAS9Rqt
|
22
22
|
qhtV7HJxNKuPj/JFH0D2cswvzznE/a5FOYO68g+YCuFi5L8wZuuM8zzdwjrWHqSV
|
23
23
|
gBEfoTEGr7Zii72cx+sCAwEAAaM5MDcwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAw
|
24
|
-
HQYDVR0OBBYEFEfFe9md/r/tj/Wmwpy+MI8d9k/
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
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
|
31
31
|
-----END CERTIFICATE-----
|
32
|
-
date:
|
32
|
+
date: 2019-03-13 00:00:00.000000000 Z
|
33
33
|
dependencies:
|
34
34
|
- !ruby/object:Gem::Dependency
|
35
35
|
name: sexp_processor
|
@@ -63,30 +63,36 @@ dependencies:
|
|
63
63
|
name: rdoc
|
64
64
|
requirement: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '4.0'
|
69
|
+
- - "<"
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
version: '7'
|
69
72
|
type: :development
|
70
73
|
prerelease: false
|
71
74
|
version_requirements: !ruby/object:Gem::Requirement
|
72
75
|
requirements:
|
73
|
-
- - "
|
76
|
+
- - ">="
|
74
77
|
- !ruby/object:Gem::Version
|
75
78
|
version: '4.0'
|
79
|
+
- - "<"
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: '7'
|
76
82
|
- !ruby/object:Gem::Dependency
|
77
83
|
name: hoe
|
78
84
|
requirement: !ruby/object:Gem::Requirement
|
79
85
|
requirements:
|
80
86
|
- - "~>"
|
81
87
|
- !ruby/object:Gem::Version
|
82
|
-
version: '3.
|
88
|
+
version: '3.17'
|
83
89
|
type: :development
|
84
90
|
prerelease: false
|
85
91
|
version_requirements: !ruby/object:Gem::Requirement
|
86
92
|
requirements:
|
87
93
|
- - "~>"
|
88
94
|
- !ruby/object:Gem::Version
|
89
|
-
version: '3.
|
95
|
+
version: '3.17'
|
90
96
|
description: |-
|
91
97
|
ruby2ruby provides a means of generating pure ruby code easily from
|
92
98
|
RubyParser compatible Sexps. This makes making dynamic language
|
@@ -130,8 +136,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
130
136
|
- !ruby/object:Gem::Version
|
131
137
|
version: '0'
|
132
138
|
requirements: []
|
133
|
-
|
134
|
-
rubygems_version: 2.7.3
|
139
|
+
rubygems_version: 3.0.2
|
135
140
|
signing_key:
|
136
141
|
specification_version: 4
|
137
142
|
summary: ruby2ruby provides a means of generating pure ruby code easily from RubyParser
|
metadata.gz.sig
CHANGED
Binary file
|