rufo 0.14.0 → 0.15.1

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: '050197c783154878217024914afe1fc208e624521b5c3c1c4cd182c29ce70795'
4
- data.tar.gz: 8ec88b8b3bc5fa60afbfa7eb7bcf395a2dd906c2b51e2c256d9f11876540279f
3
+ metadata.gz: fd22e372dba08b9779d73ceafaae522433e848e1283ef487baf5e366aaa58986
4
+ data.tar.gz: 8729947df2863f8f36ad539879750dd53c9f33c0c2885c2985984e0d07862ddc
5
5
  SHA512:
6
- metadata.gz: 7cce9d7529456084473d761247402c659950460bb75155d3689d8c89bc89993793d9638fc0bc47d45a40d97eaf2d06d13c175f1db0aeef1356ad12a8124f5bfe
7
- data.tar.gz: f4e46d300e1a94fc05c1d2aaa99ea6f24fa244faba984e8841f9874e5326ef324cc38b915008948156ec5825c572024dc0e57a0600f6b235fe06f7b7f3695e60
6
+ metadata.gz: 45f6c8259e2c20db8cd2e53778d0d8b7d3cfd57686eff05c650b61073338c9d5e89f3ed2e29a35f2e867a1b0a4ae50a7e205ce611b863b215751ffaf2522890a
7
+ data.tar.gz: 7d1d00b02060d5b4dcf01e91c1ee41cb955917b1bac5fd149f3e1d217e95aeeeb3e25920c321bed22b5635c2168d1d962fa2b0149efa68138680d45229121632
data/.rubocop.yml CHANGED
@@ -1,4 +1,5 @@
1
1
  AllCops:
2
+ NewCops: enable
2
3
  Exclude:
3
4
  - "spec/**/*"
4
5
  - "vendor/**/*"
data/CHANGELOG.md CHANGED
@@ -12,6 +12,28 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
12
12
 
13
13
  ### Added
14
14
 
15
+ ## [0.15.1] - 2023-02-08
16
+
17
+ ### Fixed
18
+
19
+ - Fix Bug: raises error while formatting anonymous block argument forwarding
20
+
21
+ ### Changed
22
+
23
+ ### Added
24
+
25
+ ## [0.15.0] - 2023-02-08
26
+
27
+ ### Fixed
28
+
29
+ ### Changed
30
+
31
+ ### Added
32
+
33
+ - Support for anonymous block argument forwarding
34
+ - Support for valueless hash literals and keyword arguments
35
+ - Support for anonymous rest and rest keyword arguments forwarding
36
+
15
37
  ## [0.14.0] - 2023-01-25
16
38
 
17
39
  ### Fixed
@@ -227,12 +227,11 @@ class Rufo::Formatter
227
227
  when :@CHAR
228
228
  # [:@CHAR, "?a", [1, 0]]
229
229
  consume_token :on_CHAR
230
- when :@gvar
230
+ when :@gvar, :@backref, :@label, :@op
231
231
  # [:@gvar, "$abc", [1, 0]]
232
- write node[1]
233
- next_token
234
- when :@backref
235
232
  # [:@backref, "$1", [1, 0]]
233
+ # [:@label, "foo:", [1, 3]]
234
+ # [:@op, "*", [1, 1]]
236
235
  write node[1]
237
236
  next_token
238
237
  when :@backtick
@@ -289,11 +288,12 @@ class Rufo::Formatter
289
288
  visit_quoted_symbol_literal(node)
290
289
  when :@ident
291
290
  consume_token :on_ident
292
- when :var_ref
291
+ when :var_ref, :var_field, :const_ref, :vcall, :fcall
293
292
  # [:var_ref, exp]
294
- visit node[1]
295
- when :var_field
296
293
  # [:var_field, exp]
294
+ # [:const_ref, [:@const, "Foo", [1, 8]]]
295
+ # [:vcall, exp]
296
+ # [:fcall, [:@ident, "foo", [1, 0]]]
297
297
  visit node[1]
298
298
  when :@kw
299
299
  # [:@kw, "nil", [1, 0]]
@@ -307,9 +307,6 @@ class Rufo::Formatter
307
307
  when :@const
308
308
  # [:@const, "FOO", [1, 0]]
309
309
  consume_token :on_const
310
- when :const_ref
311
- # [:const_ref, [:@const, "Foo", [1, 8]]]
312
- visit node[1]
313
310
  when :top_const_ref
314
311
  # [:top_const_ref, [:@const, "Foo", [1, 2]]]
315
312
  consume_op "::"
@@ -319,9 +316,7 @@ class Rufo::Formatter
319
316
  # [:top_const_field, [:@const, "Foo", [1, 2]]]
320
317
  consume_op "::"
321
318
  visit node[1]
322
- when :const_path_ref
323
- visit_path(node)
324
- when :const_path_field
319
+ when :const_path_ref, :const_path_field
325
320
  visit_path(node)
326
321
  when :assign
327
322
  visit_assign(node)
@@ -341,12 +336,6 @@ class Rufo::Formatter
341
336
  visit_suffix(node, "until")
342
337
  when :rescue_mod
343
338
  visit_suffix(node, "rescue")
344
- when :vcall
345
- # [:vcall, exp]
346
- visit node[1]
347
- when :fcall
348
- # [:fcall, [:@ident, "foo", [1, 0]]]
349
- visit node[1]
350
339
  when :command
351
340
  visit_command(node)
352
341
  when :command_call
@@ -422,10 +411,6 @@ class Rufo::Formatter
422
411
  visit_hash_key_value(node)
423
412
  when :assoc_splat
424
413
  visit_splat_inside_hash(node)
425
- when :@label
426
- # [:@label, "foo:", [1, 3]]
427
- write node[1]
428
- next_token
429
414
  when :dot2
430
415
  visit_range(node, true)
431
416
  when :dot3
@@ -452,10 +437,6 @@ class Rufo::Formatter
452
437
  consume_keyword "yield"
453
438
  when :yield
454
439
  visit_yield(node)
455
- when :@op
456
- # [:@op, "*", [1, 1]]
457
- write node[1]
458
- next_token
459
440
  when :lambda
460
441
  visit_lambda(node)
461
442
  when :zsuper
@@ -1504,7 +1485,11 @@ class Rufo::Formatter
1504
1485
  visit_comma_separated_list args
1505
1486
  end
1506
1487
 
1507
- if block_arg
1488
+ # block_arg will be...
1489
+ # - named => node
1490
+ # - anonymous => nil
1491
+ # - no arg => false
1492
+ if block_arg || block_arg.nil?
1508
1493
  skip_space_or_newline
1509
1494
 
1510
1495
  if comma?
@@ -1515,7 +1500,9 @@ class Rufo::Formatter
1515
1500
 
1516
1501
  consume_op "&"
1517
1502
  skip_space_or_newline
1518
- visit block_arg
1503
+ if block_arg
1504
+ visit block_arg
1505
+ end
1519
1506
  end
1520
1507
  end
1521
1508
 
@@ -1544,7 +1531,10 @@ class Rufo::Formatter
1544
1531
  write_indent(base_column) if needs_indent
1545
1532
  consume_op "*"
1546
1533
  skip_space_or_newline
1547
- visit star
1534
+ # The name of rest arguments might be omitted.
1535
+ if star
1536
+ visit star
1537
+ end
1548
1538
 
1549
1539
  if post_args && !post_args.empty?
1550
1540
  write_params_comma
@@ -2226,7 +2216,10 @@ class Rufo::Formatter
2226
2216
  skip_space_or_newline
2227
2217
  consume_op "&"
2228
2218
  skip_space_or_newline
2229
- visit blockarg[1]
2219
+ # Ruby 3.1 or above, block arg might be anonymous
2220
+ if blockarg[1]
2221
+ visit blockarg[1]
2222
+ end
2230
2223
  end
2231
2224
  end
2232
2225
 
@@ -2403,16 +2396,21 @@ class Rufo::Formatter
2403
2396
  arrow = symbol || !(key[0] == :@label || key[0] == :dyna_symbol)
2404
2397
 
2405
2398
  visit key
2406
- consume_space
2407
2399
 
2408
2400
  # Don't output `=>` for keys that are `label: value`
2409
2401
  # or `"label": value`
2410
2402
  if arrow
2411
- consume_op "=>"
2412
2403
  consume_space
2404
+ consume_op "=>"
2413
2405
  end
2414
2406
 
2415
- visit value
2407
+ if value.nil?
2408
+ # The value for the key is omitted.
2409
+ skip_space
2410
+ else
2411
+ consume_space
2412
+ visit value
2413
+ end
2416
2414
  end
2417
2415
 
2418
2416
  def visit_splat_inside_hash(node)
@@ -2421,7 +2419,11 @@ class Rufo::Formatter
2421
2419
  # [:assoc_splat, exp]
2422
2420
  consume_op "**"
2423
2421
  skip_space_or_newline
2424
- visit node[1]
2422
+ exp = node[1]
2423
+ # The name of rest kwargs might be omitted.
2424
+ if exp
2425
+ visit exp
2426
+ end
2425
2427
  end
2426
2428
 
2427
2429
  def visit_range(node, inclusive)
@@ -3554,7 +3556,7 @@ class Rufo::Formatter
3554
3556
  end
3555
3557
 
3556
3558
  def write_indent(indent = @indent)
3557
- @output << " " * indent
3559
+ @output << (" " * indent)
3558
3560
  @column += indent
3559
3561
  end
3560
3562
 
@@ -3899,7 +3901,7 @@ class Rufo::Formatter
3899
3901
  # get line of node, it is only used in visit_hash right now,
3900
3902
  # so handling the following node types is enough.
3901
3903
  case node.first
3902
- when :hash, :string_literal, :symbol_literal, :symbol, :vcall, :string_content, :assoc_splat, :var_ref
3904
+ when :hash, :string_literal, :symbol_literal, :symbol, :vcall, :string_content, :assoc_splat, :var_ref, :dyna_symbol
3903
3905
  node_line(node[1], beginning: beginning)
3904
3906
  when :assoc_new
3905
3907
  # There's no line number info for empty strings or hashes.
@@ -3912,8 +3914,6 @@ class Rufo::Formatter
3912
3914
  end
3913
3915
  when :assoclist_from_args
3914
3916
  node_line(beginning ? node[1][0] : node[1].last, beginning: beginning)
3915
- when :dyna_symbol
3916
- node_line(node[1], beginning: beginning)
3917
3917
  when :@label, :@int, :@ident, :@tstring_content, :@kw
3918
3918
  node[2][0]
3919
3919
  end
data/lib/rufo/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Rufo
4
- VERSION = "0.14.0"
4
+ VERSION = "0.15.1"
5
5
  end
data/rufo.gemspec CHANGED
@@ -21,15 +21,16 @@ Gem::Specification.new do |spec|
21
21
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
22
  spec.require_paths = ["lib"]
23
23
  spec.required_ruby_version = ">= 2.7.0"
24
+ spec.metadata["rubygems_mfa_required"] = "true"
24
25
 
25
26
  spec.add_development_dependency "bundler", ">= 1.15"
26
- spec.add_development_dependency "byebug", "~> 11.0.1"
27
+ spec.add_development_dependency "byebug", "~> 11.1.3"
27
28
  spec.add_development_dependency "guard-rspec", "~> 4.0"
28
29
  spec.add_development_dependency "rake", "~> 13.0"
29
30
  spec.add_development_dependency "rexml", "~> 3.2.5"
30
31
  spec.add_development_dependency "rspec", "~> 3.0"
31
- spec.add_development_dependency "rspec_junit_formatter", "~> 0.4.1"
32
- spec.add_development_dependency "rubocop", "~> 0.79.0"
33
- spec.add_development_dependency "simplecov", "~> 0.18.5"
34
- spec.add_development_dependency "simplecov-cobertura", "~> 1.3.1"
32
+ spec.add_development_dependency "rspec_junit_formatter", "~> 0.6.0"
33
+ spec.add_development_dependency "rubocop", "~> 1.44.1"
34
+ spec.add_development_dependency "simplecov", "~> 0.22.0"
35
+ spec.add_development_dependency "simplecov-cobertura", "~> 2.1"
35
36
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rufo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.0
4
+ version: 0.15.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ary Borenszweig
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-01-25 00:00:00.000000000 Z
11
+ date: 2023-02-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 11.0.1
33
+ version: 11.1.3
34
34
  type: :development
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: 11.0.1
40
+ version: 11.1.3
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: guard-rspec
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -100,56 +100,56 @@ dependencies:
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: 0.4.1
103
+ version: 0.6.0
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: 0.4.1
110
+ version: 0.6.0
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: rubocop
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: 0.79.0
117
+ version: 1.44.1
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: 0.79.0
124
+ version: 1.44.1
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: simplecov
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: 0.18.5
131
+ version: 0.22.0
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
- version: 0.18.5
138
+ version: 0.22.0
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: simplecov-cobertura
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - "~>"
144
144
  - !ruby/object:Gem::Version
145
- version: 1.3.1
145
+ version: '2.1'
146
146
  type: :development
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
150
  - - "~>"
151
151
  - !ruby/object:Gem::Version
152
- version: 1.3.1
152
+ version: '2.1'
153
153
  description: Fast and unobtrusive Ruby code formatter
154
154
  email:
155
155
  - asterite@gmail.com
@@ -193,7 +193,8 @@ files:
193
193
  homepage: https://github.com/ruby-formatter/rufo
194
194
  licenses:
195
195
  - MIT
196
- metadata: {}
196
+ metadata:
197
+ rubygems_mfa_required: 'true'
197
198
  post_install_message:
198
199
  rdoc_options: []
199
200
  require_paths: