unparser 0.5.3 → 0.6.0
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
- data/README.md +12 -0
- data/lib/unparser.rb +34 -24
- data/lib/unparser/abstract_type.rb +121 -0
- data/lib/unparser/adamantium.rb +150 -0
- data/lib/unparser/adamantium/method_builder.rb +110 -0
- data/lib/unparser/anima.rb +184 -0
- data/lib/unparser/anima/attribute.rb +59 -0
- data/lib/unparser/anima/error.rb +23 -0
- data/lib/unparser/ast.rb +1 -2
- data/lib/unparser/color.rb +1 -1
- data/lib/unparser/concord.rb +114 -0
- data/lib/unparser/diff.rb +1 -1
- data/lib/unparser/either.rb +153 -0
- data/lib/unparser/emitter.rb +1 -1
- data/lib/unparser/emitter/flow_modifier.rb +11 -2
- data/lib/unparser/emitter/hash.rb +1 -31
- data/lib/unparser/emitter/if.rb +8 -0
- data/lib/unparser/emitter/in_pattern.rb +2 -0
- data/lib/unparser/emitter/index.rb +1 -1
- data/lib/unparser/emitter/kwargs.rb +13 -0
- data/lib/unparser/emitter/match_pattern.rb +22 -0
- data/lib/unparser/emitter/op_assign.rb +2 -2
- data/lib/unparser/emitter/pair.rb +33 -0
- data/lib/unparser/emitter/primitive.rb +2 -2
- data/lib/unparser/emitter/simple.rb +2 -2
- data/lib/unparser/emitter/splat.rb +11 -1
- data/lib/unparser/equalizer.rb +98 -0
- data/lib/unparser/generation.rb +3 -1
- data/lib/unparser/node_details.rb +1 -1
- data/lib/unparser/node_helpers.rb +1 -0
- data/lib/unparser/validation.rb +3 -3
- data/lib/unparser/writer/binary.rb +1 -1
- data/lib/unparser/writer/dynamic_string.rb +13 -23
- data/lib/unparser/writer/rescue.rb +5 -1
- data/lib/unparser/writer/send.rb +7 -16
- metadata +32 -114
@@ -3,7 +3,7 @@
|
|
3
3
|
module Unparser
|
4
4
|
module Writer
|
5
5
|
class Rescue
|
6
|
-
include Writer, Adamantium
|
6
|
+
include Writer, Adamantium
|
7
7
|
|
8
8
|
children :body, :rescue_body
|
9
9
|
|
@@ -20,6 +20,10 @@ module Unparser
|
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
|
+
def emit_heredoc_reminders
|
24
|
+
emitter(body).emit_heredoc_reminders
|
25
|
+
end
|
26
|
+
|
23
27
|
def emit_postcontrol
|
24
28
|
visit(body)
|
25
29
|
writer_with(Resbody, rescue_body).emit_postcontrol
|
data/lib/unparser/writer/send.rb
CHANGED
@@ -4,7 +4,7 @@ module Unparser
|
|
4
4
|
module Writer
|
5
5
|
# Writer for send
|
6
6
|
class Send
|
7
|
-
include Writer, Adamantium
|
7
|
+
include Writer, Adamantium, Constants, Generation
|
8
8
|
|
9
9
|
INDEX_ASSIGN = :'[]='
|
10
10
|
INDEX_REFERENCE = :'[]'
|
@@ -75,20 +75,7 @@ module Unparser
|
|
75
75
|
end
|
76
76
|
|
77
77
|
def emit_normal_arguments
|
78
|
-
parentheses
|
79
|
-
arguments.each_with_index do |node, index|
|
80
|
-
write(', ') unless index.zero?
|
81
|
-
emit_argument(node, index.succ.equal?(arguments.length))
|
82
|
-
end
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
def emit_argument(argument, last)
|
87
|
-
if n_hash?(argument) && last
|
88
|
-
writer_with(Emitter::Hash, argument).emit_last_argument_hash
|
89
|
-
else
|
90
|
-
visit(argument)
|
91
|
-
end
|
78
|
+
parentheses { delimited(arguments) }
|
92
79
|
end
|
93
80
|
|
94
81
|
def emit_heredoc_reminder(argument)
|
@@ -104,7 +91,11 @@ module Unparser
|
|
104
91
|
end
|
105
92
|
|
106
93
|
def parses_as_constant?
|
107
|
-
|
94
|
+
test = Unparser.parse_either(selector.to_s).from_right do
|
95
|
+
fail InvalidNodeError.new("Invalid selector for send node: #{selector.inspect}", node)
|
96
|
+
end
|
97
|
+
|
98
|
+
n_const?(test)
|
108
99
|
end
|
109
100
|
|
110
101
|
def details
|
metadata
CHANGED
@@ -1,71 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: unparser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Markus Schirp
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-01-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: abstract_type
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: 0.0.7
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - "~>"
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: 0.0.7
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: adamantium
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: 0.2.0
|
34
|
-
type: :runtime
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - "~>"
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: 0.2.0
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: anima
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - "~>"
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: 0.3.1
|
48
|
-
type: :runtime
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - "~>"
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: 0.3.1
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: concord
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - "~>"
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: 0.1.5
|
62
|
-
type: :runtime
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - "~>"
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: 0.1.5
|
69
13
|
- !ruby/object:Gem::Dependency
|
70
14
|
name: diff-lcs
|
71
15
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,90 +24,48 @@ dependencies:
|
|
80
24
|
- - "~>"
|
81
25
|
- !ruby/object:Gem::Version
|
82
26
|
version: '1.3'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: equalizer
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - "~>"
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: 0.0.9
|
90
|
-
type: :runtime
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - "~>"
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: 0.0.9
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: mprelude
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - "~>"
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: 0.1.0
|
104
|
-
type: :runtime
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - "~>"
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: 0.1.0
|
111
27
|
- !ruby/object:Gem::Dependency
|
112
28
|
name: parser
|
113
29
|
requirement: !ruby/object:Gem::Requirement
|
114
30
|
requirements:
|
115
31
|
- - ">="
|
116
32
|
- !ruby/object:Gem::Version
|
117
|
-
version:
|
33
|
+
version: 3.0.0
|
118
34
|
type: :runtime
|
119
35
|
prerelease: false
|
120
36
|
version_requirements: !ruby/object:Gem::Requirement
|
121
37
|
requirements:
|
122
38
|
- - ">="
|
123
39
|
- !ruby/object:Gem::Version
|
124
|
-
version:
|
125
|
-
- !ruby/object:Gem::Dependency
|
126
|
-
name: procto
|
127
|
-
requirement: !ruby/object:Gem::Requirement
|
128
|
-
requirements:
|
129
|
-
- - "~>"
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version: 0.0.2
|
132
|
-
type: :runtime
|
133
|
-
prerelease: false
|
134
|
-
version_requirements: !ruby/object:Gem::Requirement
|
135
|
-
requirements:
|
136
|
-
- - "~>"
|
137
|
-
- !ruby/object:Gem::Version
|
138
|
-
version: 0.0.2
|
40
|
+
version: 3.0.0
|
139
41
|
- !ruby/object:Gem::Dependency
|
140
42
|
name: mutant
|
141
43
|
requirement: !ruby/object:Gem::Requirement
|
142
44
|
requirements:
|
143
45
|
- - "~>"
|
144
46
|
- !ruby/object:Gem::Version
|
145
|
-
version: 0.
|
47
|
+
version: 0.10.25
|
146
48
|
type: :development
|
147
49
|
prerelease: false
|
148
50
|
version_requirements: !ruby/object:Gem::Requirement
|
149
51
|
requirements:
|
150
52
|
- - "~>"
|
151
53
|
- !ruby/object:Gem::Version
|
152
|
-
version: 0.
|
54
|
+
version: 0.10.25
|
153
55
|
- !ruby/object:Gem::Dependency
|
154
56
|
name: mutant-rspec
|
155
57
|
requirement: !ruby/object:Gem::Requirement
|
156
58
|
requirements:
|
157
59
|
- - "~>"
|
158
60
|
- !ruby/object:Gem::Version
|
159
|
-
version: 0.
|
61
|
+
version: 0.10.25
|
160
62
|
type: :development
|
161
63
|
prerelease: false
|
162
64
|
version_requirements: !ruby/object:Gem::Requirement
|
163
65
|
requirements:
|
164
66
|
- - "~>"
|
165
67
|
- !ruby/object:Gem::Version
|
166
|
-
version: 0.
|
68
|
+
version: 0.10.25
|
167
69
|
- !ruby/object:Gem::Dependency
|
168
70
|
name: rspec
|
169
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -198,42 +100,42 @@ dependencies:
|
|
198
100
|
requirements:
|
199
101
|
- - "~>"
|
200
102
|
- !ruby/object:Gem::Version
|
201
|
-
version: 1.
|
103
|
+
version: 1.3.0
|
202
104
|
type: :development
|
203
105
|
prerelease: false
|
204
106
|
version_requirements: !ruby/object:Gem::Requirement
|
205
107
|
requirements:
|
206
108
|
- - "~>"
|
207
109
|
- !ruby/object:Gem::Version
|
208
|
-
version: 1.
|
110
|
+
version: 1.3.0
|
209
111
|
- !ruby/object:Gem::Dependency
|
210
112
|
name: rubocop
|
211
113
|
requirement: !ruby/object:Gem::Requirement
|
212
114
|
requirements:
|
213
115
|
- - "~>"
|
214
116
|
- !ruby/object:Gem::Version
|
215
|
-
version:
|
117
|
+
version: '1.7'
|
216
118
|
type: :development
|
217
119
|
prerelease: false
|
218
120
|
version_requirements: !ruby/object:Gem::Requirement
|
219
121
|
requirements:
|
220
122
|
- - "~>"
|
221
123
|
- !ruby/object:Gem::Version
|
222
|
-
version:
|
124
|
+
version: '1.7'
|
223
125
|
- !ruby/object:Gem::Dependency
|
224
126
|
name: rubocop-packaging
|
225
127
|
requirement: !ruby/object:Gem::Requirement
|
226
128
|
requirements:
|
227
129
|
- - "~>"
|
228
130
|
- !ruby/object:Gem::Version
|
229
|
-
version: 0.5
|
131
|
+
version: '0.5'
|
230
132
|
type: :development
|
231
133
|
prerelease: false
|
232
134
|
version_requirements: !ruby/object:Gem::Requirement
|
233
135
|
requirements:
|
234
136
|
- - "~>"
|
235
137
|
- !ruby/object:Gem::Version
|
236
|
-
version: 0.5
|
138
|
+
version: '0.5'
|
237
139
|
description: Generate equivalent source for parser gem AST nodes
|
238
140
|
email: mbj@schirp-dso.com
|
239
141
|
executables:
|
@@ -245,15 +147,23 @@ files:
|
|
245
147
|
- README.md
|
246
148
|
- bin/unparser
|
247
149
|
- lib/unparser.rb
|
150
|
+
- lib/unparser/abstract_type.rb
|
151
|
+
- lib/unparser/adamantium.rb
|
152
|
+
- lib/unparser/adamantium/method_builder.rb
|
153
|
+
- lib/unparser/anima.rb
|
154
|
+
- lib/unparser/anima/attribute.rb
|
155
|
+
- lib/unparser/anima/error.rb
|
248
156
|
- lib/unparser/ast.rb
|
249
157
|
- lib/unparser/ast/local_variable_scope.rb
|
250
158
|
- lib/unparser/buffer.rb
|
251
159
|
- lib/unparser/cli.rb
|
252
160
|
- lib/unparser/color.rb
|
253
161
|
- lib/unparser/comments.rb
|
162
|
+
- lib/unparser/concord.rb
|
254
163
|
- lib/unparser/constants.rb
|
255
164
|
- lib/unparser/diff.rb
|
256
165
|
- lib/unparser/dsl.rb
|
166
|
+
- lib/unparser/either.rb
|
257
167
|
- lib/unparser/emitter.rb
|
258
168
|
- lib/unparser/emitter/alias.rb
|
259
169
|
- lib/unparser/emitter/args.rb
|
@@ -285,17 +195,20 @@ files:
|
|
285
195
|
- lib/unparser/emitter/in_match.rb
|
286
196
|
- lib/unparser/emitter/in_pattern.rb
|
287
197
|
- lib/unparser/emitter/index.rb
|
198
|
+
- lib/unparser/emitter/kwargs.rb
|
288
199
|
- lib/unparser/emitter/kwbegin.rb
|
289
200
|
- lib/unparser/emitter/lambda.rb
|
290
201
|
- lib/unparser/emitter/masgn.rb
|
291
202
|
- lib/unparser/emitter/match.rb
|
292
203
|
- lib/unparser/emitter/match_alt.rb
|
293
204
|
- lib/unparser/emitter/match_as.rb
|
205
|
+
- lib/unparser/emitter/match_pattern.rb
|
294
206
|
- lib/unparser/emitter/match_rest.rb
|
295
207
|
- lib/unparser/emitter/match_var.rb
|
296
208
|
- lib/unparser/emitter/mlhs.rb
|
297
209
|
- lib/unparser/emitter/module.rb
|
298
210
|
- lib/unparser/emitter/op_assign.rb
|
211
|
+
- lib/unparser/emitter/pair.rb
|
299
212
|
- lib/unparser/emitter/pin.rb
|
300
213
|
- lib/unparser/emitter/primitive.rb
|
301
214
|
- lib/unparser/emitter/range.rb
|
@@ -311,6 +224,7 @@ files:
|
|
311
224
|
- lib/unparser/emitter/variable.rb
|
312
225
|
- lib/unparser/emitter/xstr.rb
|
313
226
|
- lib/unparser/emitter/yield.rb
|
227
|
+
- lib/unparser/equalizer.rb
|
314
228
|
- lib/unparser/finalize.rb
|
315
229
|
- lib/unparser/generation.rb
|
316
230
|
- lib/unparser/node_details.rb
|
@@ -331,7 +245,10 @@ files:
|
|
331
245
|
homepage: http://github.com/mbj/unparser
|
332
246
|
licenses:
|
333
247
|
- MIT
|
334
|
-
metadata:
|
248
|
+
metadata:
|
249
|
+
bug_tracker_uri: https://github.com/mbj/unparser/issues
|
250
|
+
changelog_uri: https://github.com/mbj/unparser/blob/master/Changelog.md
|
251
|
+
funding_uri: https://github.com/sponsors/mbj
|
335
252
|
post_install_message:
|
336
253
|
rdoc_options: []
|
337
254
|
require_paths:
|
@@ -347,7 +264,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
347
264
|
- !ruby/object:Gem::Version
|
348
265
|
version: '0'
|
349
266
|
requirements: []
|
350
|
-
|
267
|
+
rubyforge_project:
|
268
|
+
rubygems_version: 2.7.6.2
|
351
269
|
signing_key:
|
352
270
|
specification_version: 4
|
353
271
|
summary: Generate equivalent source for parser gem AST nodes
|