unparser 0.6.10 → 0.6.13

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f9706821d1afe21df2d101f463067ca5d5de45050ba315a0997e6b9ae7b74c63
4
- data.tar.gz: 57c783ee7422160424ddb05c00423d991fdecf84264f1f17be3bdba58c8c7a6b
3
+ metadata.gz: aa5ab956c61e189d5b428bae04f56316c68498470e62768beca73dbf964cd5ac
4
+ data.tar.gz: b6e097050d79ffbab0687a72eba3834189506269ef92dee80e71a4a58741386d
5
5
  SHA512:
6
- metadata.gz: 8d5c3e34c2a6cfdc637a010d45bf180451c3959b942a5935876e2331b9cb7dbd3b3ffdba0ac4c6bb22173f99d8ec82f179ef39190523551929014022a3a8189c
7
- data.tar.gz: c9ff58a2aabad6b162770e6a3c55855cef99f9f2adf0b828b0ff4901f112eec4e7064b84bc955dea1bcd37657c7861c51ace356d6b57af67b77a2b3a4a6d6cd4
6
+ metadata.gz: 284e039b588767beb2e3fb505ad61c6e121f667b96c4afa6ef0aef0efe31c0d06bdb5269a73614eda79600eb02cc963122b74e53e3fffb7a26cdcae95ae1d666
7
+ data.tar.gz: d77901e08acf36a10ccd00a3474662019fe84b8188ac1b39b40f3312b0b6dcb1c6f609ccd87b4d26808a0f9544425cf6d44ab456af01ff712c9c882150c4ff38
data/README.md CHANGED
@@ -10,7 +10,7 @@ The following constraints apply:
10
10
 
11
11
  * No support for macruby extensions
12
12
  * Only support for the [modern AST](https://github.com/whitequark/parser/#usage) format
13
- * Only support for Ruby >= 2.7
13
+ * Only support for Ruby >= 3.0
14
14
 
15
15
  Notable Users:
16
16
 
data/lib/unparser/cli.rb CHANGED
@@ -169,11 +169,11 @@ module Unparser
169
169
 
170
170
  def targets(file_name)
171
171
  if File.directory?(file_name)
172
- Dir.glob(File.join(file_name, '**/*.rb')).sort
172
+ Dir.glob(File.join(file_name, '**/*.rb'))
173
173
  elsif File.file?(file_name)
174
174
  [file_name]
175
175
  else
176
- Dir.glob(file_name).sort
176
+ Dir.glob(file_name)
177
177
  end.map { |file| Target::Path.new(Pathname.new(file)) }
178
178
  end
179
179
  end # CLI
@@ -10,7 +10,7 @@ module Unparser
10
10
  # Emitter for primitives based on Object#inspect
11
11
  class Inspect < self
12
12
 
13
- handle :sym, :str
13
+ handle :str
14
14
 
15
15
  private
16
16
 
@@ -20,6 +20,32 @@ module Unparser
20
20
 
21
21
  end # Inspect
22
22
 
23
+ class Symbol < self
24
+
25
+ handle :sym
26
+
27
+ private
28
+
29
+ # mutant:disable
30
+ def dispatch
31
+ if inspect_breaks_parsing?
32
+ write(":#{value.name.inspect}")
33
+ else
34
+ write(value.inspect)
35
+ end
36
+ end
37
+
38
+ # mutant:disable
39
+ def inspect_breaks_parsing?
40
+ return false unless RUBY_VERSION < '3.2.'
41
+
42
+ Unparser.parse(value.inspect)
43
+ false
44
+ rescue Parser::SyntaxError
45
+ true
46
+ end
47
+ end # Symbol
48
+
23
49
  # Emitter for complex literals
24
50
  class Complex < self
25
51
 
@@ -121,25 +121,29 @@ module Unparser
121
121
  end
122
122
 
123
123
  def emit_body(node, indent: true)
124
- if indent
125
- buffer.indent
126
- nl
127
- end
128
-
129
- if n_begin?(node)
130
- if node.children.one?
131
- visit_deep(node)
124
+ with_indent(indent: indent) do
125
+ if n_begin?(node)
126
+ if node.children.empty?
127
+ write('()')
128
+ elsif node.children.one?
129
+ visit_deep(node)
130
+ else
131
+ emit_body_inner(node)
132
+ end
132
133
  else
133
- emit_body_inner(node)
134
+ visit_deep(node)
134
135
  end
135
- else
136
- visit_deep(node)
137
136
  end
137
+ end
138
138
 
139
- if indent
140
- buffer.unindent
141
- nl
142
- end
139
+ def with_indent(indent:)
140
+ return yield unless indent
141
+
142
+ buffer.indent
143
+ nl
144
+ yield
145
+ buffer.unindent
146
+ nl
143
147
  end
144
148
 
145
149
  def emit_body_inner(node)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: unparser
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.10
4
+ version: 0.6.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Markus Schirp
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-10-31 00:00:00.000000000 Z
11
+ date: 2024-02-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: diff-lcs
@@ -30,42 +30,42 @@ dependencies:
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 3.2.2.4
33
+ version: 3.3.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: 3.2.2.4
40
+ version: 3.3.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: mutant
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 0.11.22
47
+ version: 0.11.27
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 0.11.22
54
+ version: 0.11.27
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: mutant-rspec
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 0.11.22
61
+ version: 0.11.27
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 0.11.22
68
+ version: 0.11.27
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -260,14 +260,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
260
260
  requirements:
261
261
  - - ">="
262
262
  - !ruby/object:Gem::Version
263
- version: '2.7'
263
+ version: '3.0'
264
264
  required_rubygems_version: !ruby/object:Gem::Requirement
265
265
  requirements:
266
266
  - - ">="
267
267
  - !ruby/object:Gem::Version
268
268
  version: '0'
269
269
  requirements: []
270
- rubygems_version: 3.4.10
270
+ rubygems_version: 3.3.26
271
271
  signing_key:
272
272
  specification_version: 4
273
273
  summary: Generate equivalent source for parser gem AST nodes