unparser 0.6.10 → 0.6.13

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 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