unparser 0.6.7 → 0.9.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 +10 -10
- data/lib/unparser/adamantium.rb +3 -1
- data/lib/unparser/anima.rb +12 -3
- data/lib/unparser/ast/local_variable_scope.rb +29 -26
- data/lib/unparser/ast.rb +32 -49
- data/lib/unparser/buffer.rb +44 -2
- data/lib/unparser/cli.rb +48 -11
- data/lib/unparser/color.rb +9 -1
- data/lib/unparser/comments.rb +2 -2
- data/lib/unparser/diff.rb +8 -1
- data/lib/unparser/either.rb +13 -11
- data/lib/unparser/emitter/args.rb +5 -1
- data/lib/unparser/emitter/array.rb +0 -4
- data/lib/unparser/emitter/array_pattern.rb +1 -9
- data/lib/unparser/emitter/assignment.rb +17 -8
- data/lib/unparser/emitter/begin.rb +0 -6
- data/lib/unparser/emitter/binary.rb +1 -1
- data/lib/unparser/emitter/block.rb +18 -7
- data/lib/unparser/emitter/def.rb +1 -1
- data/lib/unparser/emitter/dstr.rb +6 -5
- data/lib/unparser/emitter/dsym.rb +1 -1
- data/lib/unparser/emitter/ensure.rb +16 -0
- data/lib/unparser/emitter/flipflop.rb +7 -2
- data/lib/unparser/emitter/flow_modifier.rb +1 -7
- data/lib/unparser/emitter/for.rb +1 -1
- data/lib/unparser/emitter/hash.rb +0 -8
- data/lib/unparser/emitter/hash_pattern.rb +1 -1
- data/lib/unparser/emitter/in_pattern.rb +9 -1
- data/lib/unparser/emitter/index.rb +0 -4
- data/lib/unparser/emitter/kwbegin.rb +1 -1
- data/lib/unparser/emitter/match_pattern.rb +7 -11
- data/lib/unparser/emitter/match_pattern_p.rb +6 -1
- data/lib/unparser/emitter/mlhs.rb +7 -1
- data/lib/unparser/emitter/op_assign.rb +0 -5
- data/lib/unparser/emitter/pair.rb +31 -5
- data/lib/unparser/emitter/primitive.rb +4 -6
- data/lib/unparser/emitter/range.rb +23 -2
- data/lib/unparser/emitter/regexp.rb +5 -17
- data/lib/unparser/emitter/rescue.rb +7 -1
- data/lib/unparser/emitter/root.rb +2 -9
- data/lib/unparser/emitter/send.rb +1 -5
- data/lib/unparser/emitter/string.rb +31 -0
- data/lib/unparser/emitter/xstr.rb +8 -1
- data/lib/unparser/emitter.rb +11 -11
- data/lib/unparser/equalizer.rb +105 -71
- data/lib/unparser/generation.rb +33 -29
- data/lib/unparser/node_details/send.rb +1 -0
- data/lib/unparser/node_details.rb +8 -1
- data/lib/unparser/node_helpers.rb +19 -9
- data/lib/unparser/util.rb +24 -0
- data/lib/unparser/validation.rb +70 -28
- data/lib/unparser/writer/array.rb +51 -0
- data/lib/unparser/writer/binary.rb +8 -4
- data/lib/unparser/writer/dynamic_string.rb +130 -138
- data/lib/unparser/writer/regexp.rb +101 -0
- data/lib/unparser/writer/resbody.rb +37 -3
- data/lib/unparser/writer/rescue.rb +3 -7
- data/lib/unparser/writer/send/unary.rb +9 -4
- data/lib/unparser/writer/send.rb +8 -14
- data/lib/unparser/writer.rb +31 -1
- data/lib/unparser.rb +157 -41
- metadata +82 -33
- data/lib/unparser/concord.rb +0 -114
metadata
CHANGED
|
@@ -1,113 +1,158 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: unparser
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.9.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Markus Schirp
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: bin
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: diff-lcs
|
|
15
14
|
requirement: !ruby/object:Gem::Requirement
|
|
16
15
|
requirements:
|
|
17
|
-
- - "
|
|
16
|
+
- - ">="
|
|
17
|
+
- !ruby/object:Gem::Version
|
|
18
|
+
version: '1.6'
|
|
19
|
+
- - "<"
|
|
18
20
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: '
|
|
21
|
+
version: '3'
|
|
20
22
|
type: :runtime
|
|
21
23
|
prerelease: false
|
|
22
24
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
25
|
requirements:
|
|
24
|
-
- - "
|
|
26
|
+
- - ">="
|
|
27
|
+
- !ruby/object:Gem::Version
|
|
28
|
+
version: '1.6'
|
|
29
|
+
- - "<"
|
|
25
30
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: '
|
|
31
|
+
version: '3'
|
|
27
32
|
- !ruby/object:Gem::Dependency
|
|
28
33
|
name: parser
|
|
29
34
|
requirement: !ruby/object:Gem::Requirement
|
|
30
35
|
requirements:
|
|
31
36
|
- - ">="
|
|
32
37
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: 3.
|
|
38
|
+
version: 3.3.0
|
|
34
39
|
type: :runtime
|
|
35
40
|
prerelease: false
|
|
36
41
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
42
|
requirements:
|
|
38
43
|
- - ">="
|
|
39
44
|
- !ruby/object:Gem::Version
|
|
40
|
-
version: 3.
|
|
45
|
+
version: 3.3.0
|
|
41
46
|
- !ruby/object:Gem::Dependency
|
|
42
|
-
name:
|
|
47
|
+
name: prism
|
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
|
49
|
+
requirements:
|
|
50
|
+
- - ">="
|
|
51
|
+
- !ruby/object:Gem::Version
|
|
52
|
+
version: 1.5.1
|
|
53
|
+
type: :runtime
|
|
54
|
+
prerelease: false
|
|
55
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
56
|
+
requirements:
|
|
57
|
+
- - ">="
|
|
58
|
+
- !ruby/object:Gem::Version
|
|
59
|
+
version: 1.5.1
|
|
60
|
+
- !ruby/object:Gem::Dependency
|
|
61
|
+
name: benchmark
|
|
43
62
|
requirement: !ruby/object:Gem::Requirement
|
|
44
63
|
requirements:
|
|
45
64
|
- - "~>"
|
|
46
65
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: 0.
|
|
66
|
+
version: 0.5.0
|
|
48
67
|
type: :development
|
|
49
68
|
prerelease: false
|
|
50
69
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
70
|
requirements:
|
|
52
71
|
- - "~>"
|
|
53
72
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: 0.
|
|
73
|
+
version: 0.5.0
|
|
74
|
+
- !ruby/object:Gem::Dependency
|
|
75
|
+
name: mutant
|
|
76
|
+
requirement: !ruby/object:Gem::Requirement
|
|
77
|
+
requirements:
|
|
78
|
+
- - ">="
|
|
79
|
+
- !ruby/object:Gem::Version
|
|
80
|
+
version: 0.14.2
|
|
81
|
+
type: :development
|
|
82
|
+
prerelease: false
|
|
83
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
84
|
+
requirements:
|
|
85
|
+
- - ">="
|
|
86
|
+
- !ruby/object:Gem::Version
|
|
87
|
+
version: 0.14.2
|
|
55
88
|
- !ruby/object:Gem::Dependency
|
|
56
89
|
name: mutant-rspec
|
|
57
90
|
requirement: !ruby/object:Gem::Requirement
|
|
58
91
|
requirements:
|
|
59
|
-
- - "
|
|
92
|
+
- - ">="
|
|
60
93
|
- !ruby/object:Gem::Version
|
|
61
|
-
version: 0.
|
|
94
|
+
version: 0.14.2
|
|
62
95
|
type: :development
|
|
63
96
|
prerelease: false
|
|
64
97
|
version_requirements: !ruby/object:Gem::Requirement
|
|
65
98
|
requirements:
|
|
66
|
-
- - "
|
|
99
|
+
- - ">="
|
|
67
100
|
- !ruby/object:Gem::Version
|
|
68
|
-
version: 0.
|
|
101
|
+
version: 0.14.2
|
|
69
102
|
- !ruby/object:Gem::Dependency
|
|
70
103
|
name: rspec
|
|
71
104
|
requirement: !ruby/object:Gem::Requirement
|
|
72
105
|
requirements:
|
|
73
|
-
- - "
|
|
106
|
+
- - ">="
|
|
107
|
+
- !ruby/object:Gem::Version
|
|
108
|
+
version: '3.13'
|
|
109
|
+
- - "<"
|
|
74
110
|
- !ruby/object:Gem::Version
|
|
75
|
-
version: '
|
|
111
|
+
version: '5'
|
|
76
112
|
type: :development
|
|
77
113
|
prerelease: false
|
|
78
114
|
version_requirements: !ruby/object:Gem::Requirement
|
|
79
115
|
requirements:
|
|
80
|
-
- - "
|
|
116
|
+
- - ">="
|
|
117
|
+
- !ruby/object:Gem::Version
|
|
118
|
+
version: '3.13'
|
|
119
|
+
- - "<"
|
|
81
120
|
- !ruby/object:Gem::Version
|
|
82
|
-
version: '
|
|
121
|
+
version: '5'
|
|
83
122
|
- !ruby/object:Gem::Dependency
|
|
84
123
|
name: rspec-core
|
|
85
124
|
requirement: !ruby/object:Gem::Requirement
|
|
86
125
|
requirements:
|
|
87
|
-
- - "
|
|
126
|
+
- - ">="
|
|
127
|
+
- !ruby/object:Gem::Version
|
|
128
|
+
version: '3.13'
|
|
129
|
+
- - "<"
|
|
88
130
|
- !ruby/object:Gem::Version
|
|
89
|
-
version: '
|
|
131
|
+
version: '5'
|
|
90
132
|
type: :development
|
|
91
133
|
prerelease: false
|
|
92
134
|
version_requirements: !ruby/object:Gem::Requirement
|
|
93
135
|
requirements:
|
|
94
|
-
- - "
|
|
136
|
+
- - ">="
|
|
137
|
+
- !ruby/object:Gem::Version
|
|
138
|
+
version: '3.13'
|
|
139
|
+
- - "<"
|
|
95
140
|
- !ruby/object:Gem::Version
|
|
96
|
-
version: '
|
|
141
|
+
version: '5'
|
|
97
142
|
- !ruby/object:Gem::Dependency
|
|
98
143
|
name: rspec-its
|
|
99
144
|
requirement: !ruby/object:Gem::Requirement
|
|
100
145
|
requirements:
|
|
101
146
|
- - "~>"
|
|
102
147
|
- !ruby/object:Gem::Version
|
|
103
|
-
version:
|
|
148
|
+
version: '2.0'
|
|
104
149
|
type: :development
|
|
105
150
|
prerelease: false
|
|
106
151
|
version_requirements: !ruby/object:Gem::Requirement
|
|
107
152
|
requirements:
|
|
108
153
|
- - "~>"
|
|
109
154
|
- !ruby/object:Gem::Version
|
|
110
|
-
version:
|
|
155
|
+
version: '2.0'
|
|
111
156
|
- !ruby/object:Gem::Dependency
|
|
112
157
|
name: rubocop
|
|
113
158
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -159,7 +204,6 @@ files:
|
|
|
159
204
|
- lib/unparser/cli.rb
|
|
160
205
|
- lib/unparser/color.rb
|
|
161
206
|
- lib/unparser/comments.rb
|
|
162
|
-
- lib/unparser/concord.rb
|
|
163
207
|
- lib/unparser/constants.rb
|
|
164
208
|
- lib/unparser/diff.rb
|
|
165
209
|
- lib/unparser/dsl.rb
|
|
@@ -184,6 +228,7 @@ files:
|
|
|
184
228
|
- lib/unparser/emitter/defined.rb
|
|
185
229
|
- lib/unparser/emitter/dstr.rb
|
|
186
230
|
- lib/unparser/emitter/dsym.rb
|
|
231
|
+
- lib/unparser/emitter/ensure.rb
|
|
187
232
|
- lib/unparser/emitter/find_pattern.rb
|
|
188
233
|
- lib/unparser/emitter/flipflop.rb
|
|
189
234
|
- lib/unparser/emitter/float.rb
|
|
@@ -221,6 +266,7 @@ files:
|
|
|
221
266
|
- lib/unparser/emitter/send.rb
|
|
222
267
|
- lib/unparser/emitter/simple.rb
|
|
223
268
|
- lib/unparser/emitter/splat.rb
|
|
269
|
+
- lib/unparser/emitter/string.rb
|
|
224
270
|
- lib/unparser/emitter/super.rb
|
|
225
271
|
- lib/unparser/emitter/undef.rb
|
|
226
272
|
- lib/unparser/emitter/variable.rb
|
|
@@ -232,10 +278,13 @@ files:
|
|
|
232
278
|
- lib/unparser/node_details.rb
|
|
233
279
|
- lib/unparser/node_details/send.rb
|
|
234
280
|
- lib/unparser/node_helpers.rb
|
|
281
|
+
- lib/unparser/util.rb
|
|
235
282
|
- lib/unparser/validation.rb
|
|
236
283
|
- lib/unparser/writer.rb
|
|
284
|
+
- lib/unparser/writer/array.rb
|
|
237
285
|
- lib/unparser/writer/binary.rb
|
|
238
286
|
- lib/unparser/writer/dynamic_string.rb
|
|
287
|
+
- lib/unparser/writer/regexp.rb
|
|
239
288
|
- lib/unparser/writer/resbody.rb
|
|
240
289
|
- lib/unparser/writer/rescue.rb
|
|
241
290
|
- lib/unparser/writer/send.rb
|
|
@@ -244,15 +293,16 @@ files:
|
|
|
244
293
|
- lib/unparser/writer/send/conditional.rb
|
|
245
294
|
- lib/unparser/writer/send/regular.rb
|
|
246
295
|
- lib/unparser/writer/send/unary.rb
|
|
247
|
-
homepage:
|
|
296
|
+
homepage: https://github.com/mbj/unparser
|
|
248
297
|
licenses:
|
|
249
298
|
- MIT
|
|
250
299
|
metadata:
|
|
300
|
+
homepage_uri: https://github.com/mbj/unparser
|
|
251
301
|
bug_tracker_uri: https://github.com/mbj/unparser/issues
|
|
252
|
-
changelog_uri: https://github.com/mbj/unparser/blob/
|
|
302
|
+
changelog_uri: https://github.com/mbj/unparser/blob/main/Changelog.md
|
|
253
303
|
funding_uri: https://github.com/sponsors/mbj
|
|
304
|
+
source_code_uri: https://github.com/mbj/unparser
|
|
254
305
|
rubygems_mfa_required: 'true'
|
|
255
|
-
post_install_message:
|
|
256
306
|
rdoc_options: []
|
|
257
307
|
require_paths:
|
|
258
308
|
- lib
|
|
@@ -260,15 +310,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
260
310
|
requirements:
|
|
261
311
|
- - ">="
|
|
262
312
|
- !ruby/object:Gem::Version
|
|
263
|
-
version: '
|
|
313
|
+
version: '3.3'
|
|
264
314
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
265
315
|
requirements:
|
|
266
316
|
- - ">="
|
|
267
317
|
- !ruby/object:Gem::Version
|
|
268
318
|
version: '0'
|
|
269
319
|
requirements: []
|
|
270
|
-
rubygems_version:
|
|
271
|
-
signing_key:
|
|
320
|
+
rubygems_version: 4.0.8
|
|
272
321
|
specification_version: 4
|
|
273
322
|
summary: Generate equivalent source for parser gem AST nodes
|
|
274
323
|
test_files: []
|
data/lib/unparser/concord.rb
DELETED
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Unparser
|
|
4
|
-
# A mixin to define a composition
|
|
5
|
-
#
|
|
6
|
-
# Original code before vendoring and reduction from: https://github.com/mbj/concord.
|
|
7
|
-
class Concord < Module
|
|
8
|
-
include Adamantium, Equalizer.new(:names)
|
|
9
|
-
|
|
10
|
-
# The maximum number of objects the hosting class is composed of
|
|
11
|
-
MAX_NR_OF_OBJECTS = 3
|
|
12
|
-
|
|
13
|
-
# Return names
|
|
14
|
-
#
|
|
15
|
-
# @return [Enumerable<Symbol>]
|
|
16
|
-
#
|
|
17
|
-
# @api private
|
|
18
|
-
#
|
|
19
|
-
attr_reader :names
|
|
20
|
-
|
|
21
|
-
private
|
|
22
|
-
|
|
23
|
-
# Initialize object
|
|
24
|
-
#
|
|
25
|
-
# @return [undefined]
|
|
26
|
-
#
|
|
27
|
-
# @api private
|
|
28
|
-
#
|
|
29
|
-
# rubocop:disable Lint/MissingSuper
|
|
30
|
-
def initialize(*names)
|
|
31
|
-
if names.length > MAX_NR_OF_OBJECTS
|
|
32
|
-
fail "Composition of more than #{MAX_NR_OF_OBJECTS} objects is not allowed"
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
@names = names
|
|
36
|
-
define_initialize
|
|
37
|
-
define_readers
|
|
38
|
-
define_equalizer
|
|
39
|
-
end
|
|
40
|
-
# rubocop:enable Lint/MissingSuper
|
|
41
|
-
|
|
42
|
-
# Define equalizer
|
|
43
|
-
#
|
|
44
|
-
# @return [undefined]
|
|
45
|
-
#
|
|
46
|
-
# @api private
|
|
47
|
-
#
|
|
48
|
-
def define_equalizer
|
|
49
|
-
include(Equalizer.new(*names))
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
# Define readers
|
|
53
|
-
#
|
|
54
|
-
# @return [undefined]
|
|
55
|
-
#
|
|
56
|
-
# @api private
|
|
57
|
-
#
|
|
58
|
-
def define_readers
|
|
59
|
-
attribute_names = names
|
|
60
|
-
attr_reader(*attribute_names)
|
|
61
|
-
|
|
62
|
-
protected(*attribute_names) if attribute_names.any?
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
# Define initialize method
|
|
66
|
-
#
|
|
67
|
-
# @return [undefined]
|
|
68
|
-
#
|
|
69
|
-
# @api private
|
|
70
|
-
#
|
|
71
|
-
#
|
|
72
|
-
def define_initialize
|
|
73
|
-
ivars = instance_variable_names
|
|
74
|
-
size = names.size
|
|
75
|
-
|
|
76
|
-
define_method :initialize do |*args|
|
|
77
|
-
args_size = args.size
|
|
78
|
-
unless args_size.equal?(size)
|
|
79
|
-
fail ArgumentError, "wrong number of arguments (#{args_size} for #{size})"
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
ivars.zip(args) { |ivar, arg| instance_variable_set(ivar, arg) }
|
|
83
|
-
end
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
# Return instance variable names
|
|
87
|
-
#
|
|
88
|
-
# @return [String]
|
|
89
|
-
#
|
|
90
|
-
# @api private
|
|
91
|
-
#
|
|
92
|
-
def instance_variable_names
|
|
93
|
-
names.map { |name| "@#{name}" }
|
|
94
|
-
end
|
|
95
|
-
|
|
96
|
-
# Mixin for public attribute readers
|
|
97
|
-
class Public < self
|
|
98
|
-
|
|
99
|
-
# Hook called when module is included
|
|
100
|
-
#
|
|
101
|
-
# @param [Class,Module] descendant
|
|
102
|
-
#
|
|
103
|
-
# @return [undefined]
|
|
104
|
-
#
|
|
105
|
-
# @api private
|
|
106
|
-
#
|
|
107
|
-
def included(descendant)
|
|
108
|
-
names.each do |name|
|
|
109
|
-
descendant.__send__(:public, name)
|
|
110
|
-
end
|
|
111
|
-
end
|
|
112
|
-
end # Public
|
|
113
|
-
end # Concord
|
|
114
|
-
end # Unparser
|