rufo 0.13.0 → 0.15.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 67f0bac262d71b5c91c9babdc6d975e88d1b7f04e903b8111f7ccf4f56aa2a35
4
- data.tar.gz: c437092573d817e16b05bf2ddc6a1b5a084bc8a81a06836b2e84528f65db1dca
3
+ metadata.gz: 1862ef1cb223254a0b735f6af30b3364045bd1c8673ad2c34ccd381571174377
4
+ data.tar.gz: 38d6908494f4a93cc527e914281e44c329dbec4b82a3ca4873acbf188856a559
5
5
  SHA512:
6
- metadata.gz: 4e14f22cc80b1566449f65c5b5eb7ceaa4b3f7ed9e98c9dbce35161830049d155c7cc83dd6fe5c3e965ebc085b7cda787b18d4a705b71daebdc1571060a7b545
7
- data.tar.gz: a49e26fe230db7e7c42d6f0a8cb700dec11caac98dfc6bfdc7eda7a0cfe80c3fb7b5da675acf0fd29da6b70253c893183279fd1b042d1f6e450f66b1e6e29813
6
+ metadata.gz: c8d78360444224de4502c9f727171e7df9e4ff3344e48b28475d0cf9d92f53d6807755542db05c99d3eaa54cde3f6c2cbe5b67c7b1583d3d5e4346b4c93c7afa
7
+ data.tar.gz: f62ce1f77275410744f235c74a2293d838a5dfe6110768f6434735cc935e7520d6bc0511496e9d5c5912a945a783ac989c990a8bc8b7f61bfffb05c7055f7008
@@ -0,0 +1,60 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - master
7
+ pull_request:
8
+ schedule:
9
+ - cron: '0 0 * * 0'
10
+
11
+ jobs:
12
+ test:
13
+ runs-on: ubuntu-latest
14
+ strategy:
15
+ matrix:
16
+ ruby_version: ['3.2', '3.1', '3.0', '2.7']
17
+
18
+ steps:
19
+ - uses: actions/checkout@v3
20
+
21
+ - name: Setup Ruby
22
+ uses: ruby/setup-ruby@v1
23
+ with:
24
+ ruby-version: ${{ matrix.ruby_version }}
25
+ bundler-cache: true
26
+
27
+ - name: Bundle update
28
+ run: |
29
+ bundle update
30
+
31
+ - name: Run test
32
+ run: |
33
+ bundle exec rspec --profile 10 \
34
+ --format RspecJunitFormatter \
35
+ --out test_results/rspec.xml \
36
+ --format progress
37
+
38
+ - name: Upload code coverage
39
+ uses: codecov/codecov-action@v3
40
+ with:
41
+ files: ./coverage/coverage.xml
42
+
43
+ - name: Run rubocop
44
+ run: |
45
+ bundle exec rake rubocop
46
+
47
+ - name: Run rufo
48
+ run: |
49
+ bundle exec rake rufo:run
50
+
51
+ - name: Verify rufo works against sample codebases
52
+ run: |
53
+ bin/verify-sample-code
54
+
55
+ - name: Save test results
56
+ uses: actions/upload-artifact@v3
57
+ if: always()
58
+ with:
59
+ name: coverage-ruby-${{ matrix.ruby_version }}
60
+ path: coverage
data/.gitignore CHANGED
@@ -8,6 +8,7 @@
8
8
  /spec/reports/
9
9
  /tmp/
10
10
  /*.gem
11
+ /.ruby-version
11
12
 
12
13
  # rspec failure tracking
13
14
  .rspec_status
data/.rubocop.yml CHANGED
@@ -1,8 +1,9 @@
1
1
  AllCops:
2
+ NewCops: enable
2
3
  Exclude:
3
4
  - "spec/**/*"
4
5
  - "vendor/**/*"
5
- TargetRubyVersion: 2.6
6
+ TargetRubyVersion: 2.7
6
7
 
7
8
  Layout:
8
9
  Enabled: false
data/CHANGELOG.md CHANGED
@@ -12,6 +12,34 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
12
12
 
13
13
  ### Added
14
14
 
15
+ ## [0.15.0] - 2023-02-08
16
+
17
+ ### Fixed
18
+
19
+ ### Changed
20
+
21
+ ### Added
22
+
23
+ - Support for anonymous block argument forwarding
24
+ - Support for valueless hash literals and keyword arguments
25
+ - Support for anonymous rest and rest keyword arguments forwarding
26
+
27
+ ## [0.14.0] - 2023-01-25
28
+
29
+ ### Fixed
30
+
31
+ - Correctly interpret erb scriptlets with more than one control-flow/block statement
32
+
33
+ ### Changed
34
+
35
+ - Dropped support for Ruby 2.6 as it is end of life.
36
+
37
+ ### Added
38
+
39
+ - Support for partial argument forwarding. (issue [268](https://github.com/ruby-formatter/rufo/issues/268))
40
+ - Support for endless method. (issue [271](https://github.com/ruby-formatter/rufo/issues/271))
41
+ - Add Ruby 3.2.0 to test runs on CI.
42
+
15
43
  ## [0.13.0] - 2021-05-07
16
44
 
17
45
  ### Fixed
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Rufo
2
2
 
3
- [![CircleCI](https://circleci.com/gh/ruby-formatter/rufo.svg?style=svg)](https://circleci.com/gh/ruby-formatter/rufo)
3
+ [![GitHub Actions](https://github.com/ruby-formatter/rufo/workflows/CI/badge.svg)](https://github.com/ruby-formatter/rufo/actions/workflows/ci.yml)
4
4
  [![Gem](https://img.shields.io/gem/v/rufo.svg)](https://rubygems.org/gems/rufo)
5
5
 
6
6
  **Ru**by **fo**rmatter
@@ -12,7 +12,7 @@ Unlike the best known Ruby formatter [RuboCop](https://github.com/bbatsov/ruboco
12
12
 
13
13
  RuboCop does much more than just format code though, so feel free to run them both!
14
14
 
15
- Rufo supports all Ruby versions >= 2.4.**5**, due to a bug in Ruby's Ripper parser.
15
+ Rufo supports all Ruby versions >= 2.7.0.
16
16
 
17
17
  ## Installation
18
18
 
@@ -35,7 +35,7 @@ Or install it system wide with:
35
35
  Once the gem is installed, enable format on save integration in your editor of choice with the following libraries:
36
36
 
37
37
  - Atom: [rufo-atom](https://github.com/bmulvihill/rufo-atom) :construction:
38
- - Emacs [emacs-rufo](https://github.com/aleandros/emacs-rufo) :construction: or [rufo.el](https://github.com/danielma/rufo.el)
38
+ - Emacs [emacs-rufo](https://github.com/aleandros/emacs-rufo) :construction: or [rufo.el](https://github.com/danielma/rufo.el) or [run rufo with reformatter](https://gist.github.com/kzkn/5c80c24d39e5e7b7881d55ad04605c5b)
39
39
  - Sublime Text: [sublime-rufo](https://github.com/ruby-formatter/sublime-rufo)
40
40
  - Vim: [rufo-vim](https://github.com/splattael/rufo-vim)
41
41
  - Visual Studio Code: [vscode-rufo](https://marketplace.visualstudio.com/items?itemName=mbessey.vscode-rufo) or [rufo-vscode](https://marketplace.visualstudio.com/items?itemName=siliconsenthil.rufo-vscode)
@@ -9,6 +9,8 @@ repos = {
9
9
  "spec/rspec/core/metadata_spec.rb",
10
10
  "spec/rspec/core/formatters/html_formatter_spec.rb",
11
11
  "spec/rspec/core/formatters_spec.rb",
12
+ "spec/rspec/core/formatters/documentation_formatter_spec.rb",
13
+ "spec/rspec/core/formatters/progress_formatter_spec.rb"
12
14
  ].join(","),
13
15
  },
14
16
  }
@@ -104,11 +104,48 @@ class Rufo::ErbFormatter
104
104
  result.strip
105
105
  end
106
106
 
107
+ def format_affix(affix, levels, type)
108
+ string = ""
109
+ case type
110
+ when :prefix
111
+ count = 0
112
+ while count < levels
113
+ count += 1
114
+ string += (" " * Rufo::Formatter::INDENT_SIZE * (count > 0 ? count - 1 : 0)) + affix
115
+ string += "\n" if count < levels
116
+ end
117
+ when :suffix
118
+ count = levels
119
+ while count > 0
120
+ count -= 1
121
+ string += "\n"
122
+ string += (" " * Rufo::Formatter::INDENT_SIZE * (count > 0 ? count - 1 : 0)) + affix
123
+ end
124
+ end
125
+ string
126
+ end
127
+
107
128
  def determine_code_wrappers(code_str)
108
- return nil, "\nend" if Ripper.sexp("#{code_str}\nend")
129
+ keywords = Ripper.lex("#{code_str}").filter { |lex_token| lex_token[1] == :on_kw }
130
+ lexical_tokens = keywords.filter { |lex_token| lex_token[2] != "when" }.map { |lex_token| lex_token[3].to_s }
131
+ state_tally = lexical_tokens.group_by(&:itself).transform_values(&:count)
132
+ beg_token = state_tally["BEG"] || state_tally["EXPR_BEG"] || 0
133
+ end_token = state_tally["END"] || state_tally["EXPR_END"] || 0
134
+ depth = beg_token - end_token
135
+
136
+ if depth > 0
137
+ affix = format_affix("end", depth.abs, :suffix)
138
+ return nil, affix if Ripper.sexp("#{code_str}#{affix}")
139
+ end
140
+
109
141
  return nil, "}" if Ripper.sexp("#{code_str} }")
110
142
  return "{", nil if Ripper.sexp("{ #{code_str}")
111
- return "begin", nil if Ripper.sexp("begin #{code_str}")
143
+
144
+ if depth < 0
145
+ affix = format_affix("begin", depth.abs, :prefix)
146
+ return affix, nil if Ripper.sexp("#{affix}#{code_str}")
147
+ end
148
+
112
149
  return "begin\n", "\nend" if Ripper.sexp("begin\n#{code_str}\nend")
113
150
  return "if a\n", "\nend" if Ripper.sexp("if a\n#{code_str}\nend")
114
151
  return "case a\n", "\nend" if Ripper.sexp("case a\n#{code_str}\nend")
@@ -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
@@ -1456,14 +1437,10 @@ class Rufo::Formatter
1456
1437
  # check for ||
1457
1438
  if empty_params && !local_params
1458
1439
  # Don't write || as it's meaningless
1459
- if current_token_value == "|"
1460
- next_token
1461
- skip_space_or_newline
1462
- check :on_op
1463
- next_token
1464
- else
1465
- next_token
1466
- end
1440
+ next_token
1441
+ skip_space_or_newline
1442
+ check :on_op
1443
+ next_token
1467
1444
  return
1468
1445
  end
1469
1446
 
@@ -1520,6 +1497,9 @@ class Rufo::Formatter
1520
1497
  consume_op "&"
1521
1498
  skip_space_or_newline
1522
1499
  visit block_arg
1500
+ elsif current_token_kind == :on_op && current_token_value == "&"
1501
+ consume_op "&"
1502
+ skip_space_or_newline
1523
1503
  end
1524
1504
  end
1525
1505
 
@@ -1548,7 +1528,10 @@ class Rufo::Formatter
1548
1528
  write_indent(base_column) if needs_indent
1549
1529
  consume_op "*"
1550
1530
  skip_space_or_newline
1551
- visit star
1531
+ # The name of rest arguments might be omitted.
1532
+ if star
1533
+ visit star
1534
+ end
1552
1535
 
1553
1536
  if post_args && !post_args.empty?
1554
1537
  write_params_comma
@@ -1575,7 +1558,12 @@ class Rufo::Formatter
1575
1558
 
1576
1559
  line = @line
1577
1560
 
1578
- indent_body body
1561
+ endless = body[0].is_a?(Symbol)
1562
+ if endless
1563
+ visit body
1564
+ else
1565
+ indent_body body
1566
+ end
1579
1567
 
1580
1568
  while rescue_body
1581
1569
  # [:rescue, type, name, body, more_rescue]
@@ -1620,7 +1608,7 @@ class Rufo::Formatter
1620
1608
  end
1621
1609
 
1622
1610
  write_indent if @line != line
1623
- consume_keyword "end"
1611
+ consume_keyword "end" unless endless
1624
1612
  end
1625
1613
 
1626
1614
  def visit_rescue_types(node)
@@ -1996,6 +1984,19 @@ class Rufo::Formatter
1996
1984
  # [:@ident, "foo", [1, 6]],
1997
1985
  # [:params, nil, nil, nil, nil, nil, nil, nil],
1998
1986
  # [:bodystmt, [[:void_stmt]], nil, nil, nil]]
1987
+ #
1988
+ # OR For endless methods (in 3.0)
1989
+ # [:def,
1990
+ # [:@ident, "foo", [1, 6]],
1991
+ # nil,
1992
+ # [:string_literal, [:string_content, [:@tstring_content, "bar", [1, 11]
1993
+ # OR For endless methods (in 3.1)
1994
+ # [:def,
1995
+ # [:@ident, "foo", [1, 6]],
1996
+ # nil,
1997
+ # [:bodystmt,
1998
+ # [:string_literal, [:string_content, [:@tstring_content, "bar", [1, 11]
1999
+
1999
2000
  _, name, params, body = node
2000
2001
 
2001
2002
  consume_keyword "def"
@@ -2032,6 +2033,7 @@ class Rufo::Formatter
2032
2033
  def visit_def_from_name(name, params, body)
2033
2034
  visit name
2034
2035
 
2036
+ params = [] if params.nil?
2035
2037
  params = params[1] if params[0] == :paren
2036
2038
 
2037
2039
  skip_space
@@ -2072,6 +2074,7 @@ class Rufo::Formatter
2072
2074
  end
2073
2075
  write ")"
2074
2076
  next_token
2077
+ skip_space
2075
2078
  end
2076
2079
  elsif !empty_params?(params)
2077
2080
  if parens_in_def == :yes
@@ -2085,9 +2088,18 @@ class Rufo::Formatter
2085
2088
  skip_space
2086
2089
  end
2087
2090
 
2091
+ format_endless_method if current_token_kind == :on_op
2092
+
2088
2093
  visit body
2089
2094
  end
2090
2095
 
2096
+ def format_endless_method
2097
+ consume_space
2098
+ consume_op "="
2099
+ consume_space
2100
+ skip_space
2101
+ end
2102
+
2091
2103
  def empty_params?(node)
2092
2104
  _, a, b, c, d, e, f, g = node
2093
2105
  !a && !b && !c && !d && !e && !f && !g
@@ -2143,6 +2155,7 @@ class Rufo::Formatter
2143
2155
  when 0, [:excessed_comma]
2144
2156
  write_params_comma
2145
2157
  when [:args_forward]
2158
+ write_params_comma if needs_comma
2146
2159
  consume_op "..."
2147
2160
  else
2148
2161
  # [:rest_param, [:@ident, "x", [1, 15]]]
@@ -2179,22 +2192,31 @@ class Rufo::Formatter
2179
2192
 
2180
2193
  if double_star_param
2181
2194
  write_params_comma if needs_comma
2182
- consume_op "**"
2183
- skip_space_or_newline
2195
+ case double_star_param
2196
+ when [:args_forward] # may be [:args_forward] in 3.1.0
2197
+ consume_op "..."
2198
+ else
2199
+ consume_op "**" # here
2200
+ skip_space_or_newline
2184
2201
 
2185
- # A nameless double star comes as an... Integer? :-S
2186
- visit double_star_param if double_star_param.is_a?(Array)
2187
- skip_space_or_newline
2188
- needs_comma = true
2202
+ # A nameless double star comes as an... Integer? :-S
2203
+ visit double_star_param if double_star_param.is_a?(Array)
2204
+ skip_space_or_newline
2205
+ needs_comma = true
2206
+ end
2189
2207
  end
2190
2208
 
2191
- if blockarg
2209
+ # In 3.1.0 blockarg may be just a symbol `:&`
2210
+ if blockarg && blockarg.is_a?(Array)
2192
2211
  # [:blockarg, [:@ident, "block", [1, 16]]]
2193
2212
  write_params_comma if needs_comma
2194
2213
  skip_space_or_newline
2195
2214
  consume_op "&"
2196
2215
  skip_space_or_newline
2197
- visit blockarg[1]
2216
+ # Ruby 3.1 or above, block arg might be anonymous
2217
+ if blockarg[1]
2218
+ visit blockarg[1]
2219
+ end
2198
2220
  end
2199
2221
  end
2200
2222
 
@@ -2371,16 +2393,21 @@ class Rufo::Formatter
2371
2393
  arrow = symbol || !(key[0] == :@label || key[0] == :dyna_symbol)
2372
2394
 
2373
2395
  visit key
2374
- consume_space
2375
2396
 
2376
2397
  # Don't output `=>` for keys that are `label: value`
2377
2398
  # or `"label": value`
2378
2399
  if arrow
2379
- consume_op "=>"
2380
2400
  consume_space
2401
+ consume_op "=>"
2381
2402
  end
2382
2403
 
2383
- visit value
2404
+ if value.nil?
2405
+ # The value for the key is omitted.
2406
+ skip_space
2407
+ else
2408
+ consume_space
2409
+ visit value
2410
+ end
2384
2411
  end
2385
2412
 
2386
2413
  def visit_splat_inside_hash(node)
@@ -2389,7 +2416,11 @@ class Rufo::Formatter
2389
2416
  # [:assoc_splat, exp]
2390
2417
  consume_op "**"
2391
2418
  skip_space_or_newline
2392
- visit node[1]
2419
+ exp = node[1]
2420
+ # The name of rest kwargs might be omitted.
2421
+ if exp
2422
+ visit exp
2423
+ end
2393
2424
  end
2394
2425
 
2395
2426
  def visit_range(node, inclusive)
@@ -3188,13 +3219,6 @@ class Rufo::Formatter
3188
3219
  last_space = current_token
3189
3220
  next_token
3190
3221
  when :on_nl, :on_ignored_nl
3191
- # I don't know why but sometimes a on_ignored_nl
3192
- # can appear with nil as the "text", and that's wrong
3193
- if current_token[2].nil?
3194
- next_token
3195
- next
3196
- end
3197
-
3198
3222
  if last == :newline
3199
3223
  # If we pass through consecutive newlines, don't print them
3200
3224
  # yet, but remember this fact
@@ -3529,7 +3553,7 @@ class Rufo::Formatter
3529
3553
  end
3530
3554
 
3531
3555
  def write_indent(indent = @indent)
3532
- @output << " " * indent
3556
+ @output << (" " * indent)
3533
3557
  @column += indent
3534
3558
  end
3535
3559
 
@@ -3874,7 +3898,7 @@ class Rufo::Formatter
3874
3898
  # get line of node, it is only used in visit_hash right now,
3875
3899
  # so handling the following node types is enough.
3876
3900
  case node.first
3877
- when :hash, :string_literal, :symbol_literal, :symbol, :vcall, :string_content, :assoc_splat, :var_ref
3901
+ when :hash, :string_literal, :symbol_literal, :symbol, :vcall, :string_content, :assoc_splat, :var_ref, :dyna_symbol
3878
3902
  node_line(node[1], beginning: beginning)
3879
3903
  when :assoc_new
3880
3904
  # There's no line number info for empty strings or hashes.
@@ -3887,12 +3911,6 @@ class Rufo::Formatter
3887
3911
  end
3888
3912
  when :assoclist_from_args
3889
3913
  node_line(beginning ? node[1][0] : node[1].last, beginning: beginning)
3890
- when :dyna_symbol
3891
- if node[1][0].is_a?(Symbol)
3892
- node_line(node[1], beginning: beginning)
3893
- else
3894
- node_line(node[1][0], beginning: beginning)
3895
- end
3896
3914
  when :@label, :@int, :@ident, :@tstring_content, :@kw
3897
3915
  node[2][0]
3898
3916
  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.13.0"
4
+ VERSION = "0.15.0"
5
5
  end
data/rufo.gemspec CHANGED
@@ -20,16 +20,17 @@ Gem::Specification.new do |spec|
20
20
  spec.bindir = "exe"
21
21
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
22
  spec.require_paths = ["lib"]
23
- spec.required_ruby_version = ">= 2.6.0"
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.13.0
4
+ version: 0.15.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ary Borenszweig
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-05-09 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
@@ -158,8 +158,8 @@ executables:
158
158
  extensions: []
159
159
  extra_rdoc_files: []
160
160
  files:
161
- - ".circleci/config.yml"
162
161
  - ".github/PULL_REQUEST_TEMPLATE.md"
162
+ - ".github/workflows/ci.yml"
163
163
  - ".gitignore"
164
164
  - ".rspec"
165
165
  - ".rubocop.yml"
@@ -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:
@@ -202,14 +203,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
202
203
  requirements:
203
204
  - - ">="
204
205
  - !ruby/object:Gem::Version
205
- version: 2.6.0
206
+ version: 2.7.0
206
207
  required_rubygems_version: !ruby/object:Gem::Requirement
207
208
  requirements:
208
209
  - - ">="
209
210
  - !ruby/object:Gem::Version
210
211
  version: '0'
211
212
  requirements: []
212
- rubygems_version: 3.2.17
213
+ rubygems_version: 3.4.1
213
214
  signing_key:
214
215
  specification_version: 4
215
216
  summary: Ruby code formatter
data/.circleci/config.yml DELETED
@@ -1,101 +0,0 @@
1
- "-": &dockerbuild
2
- steps:
3
- - checkout
4
-
5
- # Which version of ruby?
6
- - run:
7
- name: Which ruby?
8
- command: ruby --version | tee ruby-version-for-ci.txt
9
-
10
- # Which version of bundler?
11
- - run:
12
- name: Which bundler?
13
- command: bundle -v
14
-
15
- # Restore bundle cache
16
- - restore_cache:
17
- keys:
18
- - bundler-packages-v2-{{ checksum "ruby-version-for-ci.txt" }}-{{ checksum "rufo.gemspec" }}-{{ checksum "bin/verify-sample-code" }}
19
-
20
- - run:
21
- name: Bundle Install
22
- command: bundle check || bundle install
23
-
24
- - run:
25
- name: Run rspec
26
- command: |
27
- bundle exec rspec --profile 10 \
28
- --format RspecJunitFormatter \
29
- --out test_results/rspec.xml \
30
- --format progress
31
- - run:
32
- name: Upload code coverage
33
- command: bash <(curl -s https://codecov.io/bash) -f 'coverage/coverage.xml'
34
- - run:
35
- name: Run RuboCop
36
- command: |
37
- bundle exec rake rubocop
38
- - run:
39
- name: Run Rufo
40
- command: |
41
- bundle exec rake rufo:run
42
-
43
- - run:
44
- name: Verify rufo works against sample codebases
45
- command: |
46
- bin/verify-sample-code
47
-
48
- # Store bundle cache
49
- - save_cache:
50
- key: bundler-packages-v2-{{ checksum "ruby-version-for-ci.txt" }}-{{ checksum "rufo.gemspec" }}-{{ checksum "bin/verify-sample-code" }}
51
- paths:
52
- - vendor/bundle
53
- - Gemfile.lock
54
-
55
- # Save test results for timing analysis
56
- - store_test_results:
57
- path: test_results
58
-
59
- version: 2
60
- jobs:
61
- build-3-0-1:
62
- <<: *dockerbuild
63
- docker:
64
- - image: circleci/ruby:3.0.1
65
- environment:
66
- BUNDLE_JOBS: "3"
67
- BUNDLE_RETRY: "3"
68
- BUNDLE_PATH: /home/circleci/project/vendor/bundle
69
- build-2-7-3:
70
- <<: *dockerbuild
71
- docker:
72
- - image: circleci/ruby:2.7.3
73
- environment:
74
- BUNDLE_JOBS: "3"
75
- BUNDLE_RETRY: "3"
76
- BUNDLE_PATH: /home/circleci/project/vendor/bundle
77
- build-2-6-7:
78
- <<: *dockerbuild
79
- docker:
80
- - image: circleci/ruby:2.6.7
81
- environment:
82
- BUNDLE_JOBS: "3"
83
- BUNDLE_RETRY: "3"
84
- BUNDLE_PATH: /home/circleci/project/vendor/bundle
85
- build-2-6-1:
86
- <<: *dockerbuild
87
- docker:
88
- - image: circleci/ruby:2.6.1
89
- environment:
90
- BUNDLE_JOBS: "3"
91
- BUNDLE_RETRY: "3"
92
- BUNDLE_PATH: vendor/bundle
93
-
94
- workflows:
95
- version: 2
96
- test:
97
- jobs:
98
- - build-3-0-1
99
- - build-2-7-3
100
- - build-2-6-7
101
- - build-2-6-1