rufo 0.13.0 → 0.15.0

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