rufo 0.18.0 → 0.18.2
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 +4 -4
- data/.github/workflows/ci.yml +4 -4
- data/CHANGELOG.md +24 -1
- data/Gemfile +11 -0
- data/README.md +1 -1
- data/bin/verify-sample-code +24 -8
- data/lib/rufo/erb_formatter.rb +5 -1
- data/lib/rufo/formatter.rb +111 -87
- data/lib/rufo/version.rb +1 -1
- data/rufo.gemspec +0 -11
- metadata +4 -147
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 87b000f131dd4c6b9e87e82513ed7009a9cbcc7078e44e51627a8b6205f15ea0
|
|
4
|
+
data.tar.gz: 05a5878c0d790d5fb867606b2cc6f064f0789757a9eecb62037e2adb41af249a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 329e2b72b0755c40bb44226722b34199a8907a7911244c330e453d9fe3bc824d45179933d55736162727147068595e8e090f44e1852ad4b5ce0eb794a4dea517
|
|
7
|
+
data.tar.gz: e44a00c12494e7fd015583ed481e97fca7878115942fb4e5cfa5c10a6575ea46d6d1d21f4157871a738e2f2659354f310f0c4772bcd37922eb97dfb796887ae2
|
data/.github/workflows/ci.yml
CHANGED
|
@@ -13,10 +13,10 @@ jobs:
|
|
|
13
13
|
runs-on: ubuntu-latest
|
|
14
14
|
strategy:
|
|
15
15
|
matrix:
|
|
16
|
-
ruby_version: ['3.3', '3.2', '3.1', '3.0']
|
|
16
|
+
ruby_version: ['3.4', '3.3', '3.2', '3.1', '3.0']
|
|
17
17
|
|
|
18
18
|
steps:
|
|
19
|
-
- uses: actions/checkout@
|
|
19
|
+
- uses: actions/checkout@v4
|
|
20
20
|
|
|
21
21
|
- name: Setup Ruby
|
|
22
22
|
uses: ruby/setup-ruby@v1
|
|
@@ -36,7 +36,7 @@ jobs:
|
|
|
36
36
|
--format progress
|
|
37
37
|
|
|
38
38
|
- name: Upload code coverage
|
|
39
|
-
uses: codecov/codecov-action@
|
|
39
|
+
uses: codecov/codecov-action@v4
|
|
40
40
|
with:
|
|
41
41
|
files: ./coverage/coverage.xml
|
|
42
42
|
|
|
@@ -53,7 +53,7 @@ jobs:
|
|
|
53
53
|
bin/verify-sample-code
|
|
54
54
|
|
|
55
55
|
- name: Save test results
|
|
56
|
-
uses: actions/upload-artifact@
|
|
56
|
+
uses: actions/upload-artifact@v4
|
|
57
57
|
if: always()
|
|
58
58
|
with:
|
|
59
59
|
name: coverage-ruby-${{ matrix.ruby_version }}
|
data/CHANGELOG.md
CHANGED
|
@@ -12,10 +12,33 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
|
|
|
12
12
|
|
|
13
13
|
### Added
|
|
14
14
|
|
|
15
|
+
## [0.18.2] - 2025-12-24
|
|
16
|
+
|
|
17
|
+
### Fixed
|
|
18
|
+
|
|
19
|
+
### Changed
|
|
20
|
+
|
|
21
|
+
### Added
|
|
22
|
+
- Support formatting ERB native comment. ([#352](https://github.com/ruby-formatter/rufo/pull/352))
|
|
23
|
+
|
|
24
|
+
## [0.18.1] - 2025-02-22
|
|
25
|
+
|
|
26
|
+
### Fixed
|
|
27
|
+
- Fix error when formatting pattern matching syntax. ([#325](https://github.com/ruby-formatter/rufo/pull/325))
|
|
28
|
+
- Fix bug for toplevel Array literal and Hash literal indentation. ([#327](https://github.com/ruby-formatter/rufo/pull/327))
|
|
29
|
+
- Fix bug for inline pattern matching to case expression. ([#338](https://github.com/ruby-formatter/rufo/pull/338))
|
|
30
|
+
- Fix bug for heredoc indentation. ([#342](https://github.com/ruby-formatter/rufo/pull/342))
|
|
31
|
+
- Fix bug for passing anonymous block arg. ([#332](https://github.com/ruby-formatter/rufo/issues/332))
|
|
32
|
+
|
|
33
|
+
### Changed
|
|
34
|
+
|
|
35
|
+
### Added
|
|
36
|
+
- Add Ruby 3.4 to test runs on CI. ([#337](https://github.com/ruby-formatter/rufo/pull/337))
|
|
37
|
+
|
|
15
38
|
## [0.18.0] - 2024-05-30
|
|
16
39
|
|
|
17
40
|
### Fixed
|
|
18
|
-
- Fix error when formatting ERB ([#
|
|
41
|
+
- Fix error when formatting ERB ([#323](https://github.com/ruby-formatter/rufo/pull/323))
|
|
19
42
|
|
|
20
43
|
### Changed
|
|
21
44
|
- Dropped support for Ruby 2.7 as it is end of life.
|
data/Gemfile
CHANGED
|
@@ -2,3 +2,14 @@ source "https://rubygems.org"
|
|
|
2
2
|
|
|
3
3
|
# Specify your gem's dependencies in rufo.gemspec
|
|
4
4
|
gemspec
|
|
5
|
+
|
|
6
|
+
# Development dependencies
|
|
7
|
+
gem "bundler", ">= 1.15"
|
|
8
|
+
gem "debug", ">= 1.0.0"
|
|
9
|
+
gem "guard-rspec", "~> 4.0"
|
|
10
|
+
gem "rake", "~> 13.0"
|
|
11
|
+
gem "rspec", "~> 3.0"
|
|
12
|
+
gem "rspec_junit_formatter", "~> 0.6.0"
|
|
13
|
+
gem "rubocop", "~> 1.69.2"
|
|
14
|
+
gem "simplecov", "~> 0.22.0"
|
|
15
|
+
gem "simplecov-cobertura", "~> 3.1"
|
data/README.md
CHANGED
|
@@ -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 >=
|
|
15
|
+
Rufo supports all Ruby versions >= 3.0.0.
|
|
16
16
|
|
|
17
17
|
## Installation
|
|
18
18
|
|
data/bin/verify-sample-code
CHANGED
|
@@ -1,8 +1,21 @@
|
|
|
1
1
|
#!/usr/bin/env ruby
|
|
2
2
|
# frozen_string_literal: true
|
|
3
3
|
repos = {
|
|
4
|
-
"rspec/rspec
|
|
5
|
-
|
|
4
|
+
"rspec/rspec" => {
|
|
5
|
+
path: "rspec-core",
|
|
6
|
+
rspec_flags: {
|
|
7
|
+
"--exclude-pattern" => [
|
|
8
|
+
"spec/rspec/core/world_spec.rb",
|
|
9
|
+
"spec/rspec/core/formatters/exception_presenter_spec.rb",
|
|
10
|
+
"spec/rspec/core/formatters/snippet_extractor_spec.rb",
|
|
11
|
+
"spec/rspec/core/metadata_spec.rb",
|
|
12
|
+
"spec/rspec/core/formatters/html_formatter_spec.rb",
|
|
13
|
+
"spec/rspec/core/formatters/progress_formatter_spec.rb",
|
|
14
|
+
"spec/rspec/core/formatters_spec.rb",
|
|
15
|
+
"spec/rspec/core/formatters/documentation_formatter_spec.rb",
|
|
16
|
+
].join(","),
|
|
17
|
+
},
|
|
18
|
+
},
|
|
6
19
|
}
|
|
7
20
|
|
|
8
21
|
def run_command(cmd, allowed_statuses: [0])
|
|
@@ -35,7 +48,7 @@ end
|
|
|
35
48
|
|
|
36
49
|
def format_repo(repo)
|
|
37
50
|
run_command(
|
|
38
|
-
"bundle exec rake rufo:run
|
|
51
|
+
"bundle exec rake rufo:run[sample_code/#{repo}]",
|
|
39
52
|
allowed_statuses: [0, 1, 3],
|
|
40
53
|
)
|
|
41
54
|
end
|
|
@@ -44,10 +57,13 @@ def post_format_checks(repo, rspec_flags)
|
|
|
44
57
|
run_rspec(repo, rspec_flags)
|
|
45
58
|
end
|
|
46
59
|
|
|
47
|
-
repos.each do |repo,
|
|
60
|
+
repos.each do |repo, options|
|
|
61
|
+
path = "#{repo}/#{options[:path]}"
|
|
62
|
+
rspec_flags = options[:rspec_flags]
|
|
63
|
+
|
|
48
64
|
clone_repo(repo)
|
|
49
|
-
setup_repo(
|
|
50
|
-
pre_format_checks(
|
|
51
|
-
format_repo(
|
|
52
|
-
post_format_checks(
|
|
65
|
+
setup_repo(path)
|
|
66
|
+
pre_format_checks(path, rspec_flags)
|
|
67
|
+
format_repo(path)
|
|
68
|
+
post_format_checks(path, rspec_flags)
|
|
53
69
|
end
|
data/lib/rufo/erb_formatter.rb
CHANGED
|
@@ -34,7 +34,7 @@ class Rufo::ErbFormatter
|
|
|
34
34
|
def format
|
|
35
35
|
out = []
|
|
36
36
|
process_erb do |(type, content)|
|
|
37
|
-
if type == :code
|
|
37
|
+
if type == :code && !erb_comment?(content)
|
|
38
38
|
formatted_code = process_code(content)
|
|
39
39
|
indented_code = formatted_code.lines.join(" " * current_column)
|
|
40
40
|
out << " #{indented_code} "
|
|
@@ -176,4 +176,8 @@ class Rufo::ErbFormatter
|
|
|
176
176
|
def disable_code_mode
|
|
177
177
|
@code_mode = false
|
|
178
178
|
end
|
|
179
|
+
|
|
180
|
+
def erb_comment?(code)
|
|
181
|
+
code.start_with?("#")
|
|
182
|
+
end
|
|
179
183
|
end
|
data/lib/rufo/formatter.rb
CHANGED
|
@@ -243,36 +243,7 @@ class Rufo::Formatter
|
|
|
243
243
|
when :string_concat
|
|
244
244
|
visit_string_concat node
|
|
245
245
|
when :@tstring_content
|
|
246
|
-
|
|
247
|
-
heredoc, tilde = @current_heredoc
|
|
248
|
-
looking_at_newline = current_token_kind == :on_tstring_content && current_token_value == "\n"
|
|
249
|
-
if heredoc && tilde && !@last_was_newline && looking_at_newline
|
|
250
|
-
check :on_tstring_content
|
|
251
|
-
consume_token_value(current_token_value)
|
|
252
|
-
next_token
|
|
253
|
-
else
|
|
254
|
-
# For heredocs with tilde we sometimes need to align the contents
|
|
255
|
-
if heredoc && tilde && @last_was_newline
|
|
256
|
-
unless (current_token_value == "\n" ||
|
|
257
|
-
current_token_kind == :on_heredoc_end)
|
|
258
|
-
write_indent(next_indent)
|
|
259
|
-
end
|
|
260
|
-
skip_ignored_space
|
|
261
|
-
if current_token_kind == :on_tstring_content
|
|
262
|
-
check :on_tstring_content
|
|
263
|
-
consume_token_value(current_token_value)
|
|
264
|
-
next_token
|
|
265
|
-
end
|
|
266
|
-
else
|
|
267
|
-
while (current_token_kind == :on_ignored_sp) ||
|
|
268
|
-
(current_token_kind == :on_tstring_content) ||
|
|
269
|
-
(current_token_kind == :on_embexpr_beg)
|
|
270
|
-
check current_token_kind
|
|
271
|
-
break if current_token_kind == :on_embexpr_beg
|
|
272
|
-
consume_token current_token_kind
|
|
273
|
-
end
|
|
274
|
-
end
|
|
275
|
-
end
|
|
246
|
+
visit_at_tstring_content node
|
|
276
247
|
when :string_content
|
|
277
248
|
# [:string_content, exp]
|
|
278
249
|
visit_exps node[1..-1], with_lines: false
|
|
@@ -742,6 +713,38 @@ class Rufo::Formatter
|
|
|
742
713
|
visit string2
|
|
743
714
|
end
|
|
744
715
|
|
|
716
|
+
def visit_at_tstring_content(_node)
|
|
717
|
+
# [:@tstring_content, "hello ", [1, 1]]
|
|
718
|
+
heredoc, tilde = @current_heredoc
|
|
719
|
+
looking_at_newline = current_token_kind == :on_tstring_content && current_token_value == "\n"
|
|
720
|
+
if heredoc && tilde && !@last_was_newline && looking_at_newline
|
|
721
|
+
check :on_tstring_content
|
|
722
|
+
consume_token_value(current_token_value)
|
|
723
|
+
next_token
|
|
724
|
+
else
|
|
725
|
+
# For heredocs with tilde we sometimes need to align the contents
|
|
726
|
+
if heredoc && tilde
|
|
727
|
+
while (current_token_kind == :on_ignored_sp) ||
|
|
728
|
+
(current_token_kind == :on_tstring_content)
|
|
729
|
+
if @last_was_newline && current_token_value != "\n"
|
|
730
|
+
write_indent(next_indent)
|
|
731
|
+
@last_was_newline = false
|
|
732
|
+
end
|
|
733
|
+
if current_token_kind == :on_ignored_sp
|
|
734
|
+
skip_ignored_space
|
|
735
|
+
else
|
|
736
|
+
consume_token current_token_kind
|
|
737
|
+
end
|
|
738
|
+
end
|
|
739
|
+
else
|
|
740
|
+
while (current_token_kind == :on_ignored_sp) ||
|
|
741
|
+
(current_token_kind == :on_tstring_content)
|
|
742
|
+
consume_token current_token_kind
|
|
743
|
+
end
|
|
744
|
+
end
|
|
745
|
+
end
|
|
746
|
+
end
|
|
747
|
+
|
|
745
748
|
def visit_string_interpolation(node)
|
|
746
749
|
# [:string_embexpr, exps]
|
|
747
750
|
consume_token :on_embexpr_beg
|
|
@@ -1084,7 +1087,7 @@ class Rufo::Formatter
|
|
|
1084
1087
|
# Check if there's a block arg and if the call ends with hash key/values
|
|
1085
1088
|
if args_node[0] == :args_add_block
|
|
1086
1089
|
_, args, block_arg = args_node
|
|
1087
|
-
want_trailing_comma =
|
|
1090
|
+
want_trailing_comma = block_arg_type(block_arg) == :no_arg
|
|
1088
1091
|
if args.is_a?(Array) && (last_arg = args.last) && last_arg.is_a?(Array) &&
|
|
1089
1092
|
last_arg[0].is_a?(Symbol) && last_arg[0] != :bare_assoc_hash
|
|
1090
1093
|
want_trailing_comma = false
|
|
@@ -1476,11 +1479,7 @@ class Rufo::Formatter
|
|
|
1476
1479
|
visit_comma_separated_list args
|
|
1477
1480
|
end
|
|
1478
1481
|
|
|
1479
|
-
|
|
1480
|
-
# - named => node
|
|
1481
|
-
# - anonymous => nil
|
|
1482
|
-
# - no arg => false
|
|
1483
|
-
if block_arg || block_arg.nil?
|
|
1482
|
+
if block_arg_type(block_arg) != :no_arg
|
|
1484
1483
|
skip_space_or_newline
|
|
1485
1484
|
|
|
1486
1485
|
if comma?
|
|
@@ -2209,14 +2208,14 @@ class Rufo::Formatter
|
|
|
2209
2208
|
|
|
2210
2209
|
_, elements = node
|
|
2211
2210
|
|
|
2212
|
-
|
|
2211
|
+
base_column = @column
|
|
2213
2212
|
|
|
2214
2213
|
check :on_lbracket
|
|
2215
2214
|
write "["
|
|
2216
2215
|
next_token
|
|
2217
2216
|
|
|
2218
2217
|
if elements
|
|
2219
|
-
visit_literal_elements to_ary(elements), inside_array: true, token_column:
|
|
2218
|
+
visit_literal_elements to_ary(elements), inside_array: true, token_column: base_column
|
|
2220
2219
|
else
|
|
2221
2220
|
skip_space_or_newline
|
|
2222
2221
|
end
|
|
@@ -2326,7 +2325,7 @@ class Rufo::Formatter
|
|
|
2326
2325
|
def visit_hash(node)
|
|
2327
2326
|
# [:hash, elements]
|
|
2328
2327
|
_, elements = node
|
|
2329
|
-
|
|
2328
|
+
base_column = @column
|
|
2330
2329
|
|
|
2331
2330
|
closing_brace_token, _ = find_closing_brace_token
|
|
2332
2331
|
need_space = need_space_for_hash?(node, node[1], closing_brace_token)
|
|
@@ -2340,7 +2339,7 @@ class Rufo::Formatter
|
|
|
2340
2339
|
if elements
|
|
2341
2340
|
# [:assoclist_from_args, elements]
|
|
2342
2341
|
push_hash(node) do
|
|
2343
|
-
visit_literal_elements(elements[1], inside_hash: true, token_column:
|
|
2342
|
+
visit_literal_elements(elements[1], inside_hash: true, token_column: base_column)
|
|
2344
2343
|
end
|
|
2345
2344
|
char_after_brace = @output[brace_position + 1]
|
|
2346
2345
|
# Check that need_space is set correctly.
|
|
@@ -2713,7 +2712,7 @@ class Rufo::Formatter
|
|
|
2713
2712
|
base_column = @column
|
|
2714
2713
|
base_line = @line
|
|
2715
2714
|
needs_final_space = (inside_hash || inside_array) && space?
|
|
2716
|
-
|
|
2715
|
+
skip_space
|
|
2717
2716
|
|
|
2718
2717
|
if inside_hash
|
|
2719
2718
|
needs_final_space = false
|
|
@@ -2925,11 +2924,19 @@ class Rufo::Formatter
|
|
|
2925
2924
|
|
|
2926
2925
|
# If node is inline pattern matching, case_expression will be false
|
|
2927
2926
|
case_expression = keyword?("case")
|
|
2927
|
+
already_visit_cond = false
|
|
2928
2928
|
if case_expression
|
|
2929
|
-
|
|
2929
|
+
if cond && cond[0] == :case
|
|
2930
|
+
visit cond
|
|
2931
|
+
# In this case, the `case` token is for the `cond`, but not for `node`
|
|
2932
|
+
case_expression = false
|
|
2933
|
+
already_visit_cond = true
|
|
2934
|
+
else
|
|
2935
|
+
consume_keyword "case"
|
|
2936
|
+
end
|
|
2930
2937
|
end
|
|
2931
2938
|
|
|
2932
|
-
if cond
|
|
2939
|
+
if cond && !already_visit_cond
|
|
2933
2940
|
consume_space
|
|
2934
2941
|
visit cond
|
|
2935
2942
|
end
|
|
@@ -3084,46 +3091,75 @@ class Rufo::Formatter
|
|
|
3084
3091
|
_, const_ref, pre_rest, rest, post_rest = node
|
|
3085
3092
|
|
|
3086
3093
|
if const_ref
|
|
3087
|
-
|
|
3094
|
+
visit const_ref
|
|
3088
3095
|
end
|
|
3089
3096
|
|
|
3097
|
+
left_paren_token, right_paren_token = if current_token_kind == :on_lparen
|
|
3098
|
+
%i[on_lparen on_rparen]
|
|
3099
|
+
elsif current_token_kind == :on_lbracket
|
|
3100
|
+
%i[on_lbracket on_rbracket]
|
|
3101
|
+
else
|
|
3102
|
+
[]
|
|
3103
|
+
end
|
|
3104
|
+
|
|
3090
3105
|
# pattern is [*]
|
|
3091
3106
|
if !pre_rest && !post_rest && rest == [:var_field, nil]
|
|
3092
|
-
|
|
3107
|
+
if left_paren_token
|
|
3108
|
+
consume_token left_paren_token
|
|
3109
|
+
end
|
|
3110
|
+
|
|
3093
3111
|
skip_space_or_newline
|
|
3094
3112
|
consume_op "*"
|
|
3095
3113
|
skip_space_or_newline
|
|
3096
|
-
|
|
3114
|
+
|
|
3115
|
+
if right_paren_token
|
|
3116
|
+
consume_token right_paren_token
|
|
3117
|
+
end
|
|
3097
3118
|
return
|
|
3098
3119
|
end
|
|
3099
3120
|
|
|
3100
3121
|
token_column = current_token_column
|
|
3101
3122
|
|
|
3102
|
-
|
|
3103
|
-
|
|
3104
|
-
consume_token :on_lbracket
|
|
3123
|
+
if left_paren_token
|
|
3124
|
+
consume_token left_paren_token
|
|
3105
3125
|
skip_space
|
|
3106
3126
|
end
|
|
3107
3127
|
|
|
3108
|
-
|
|
3128
|
+
newline = newline?
|
|
3129
|
+
wrote_comma = false
|
|
3109
3130
|
if pre_rest
|
|
3110
|
-
|
|
3111
|
-
|
|
3112
|
-
end
|
|
3131
|
+
visit_comma_separated_list pre_rest
|
|
3132
|
+
skip_space
|
|
3113
3133
|
|
|
3114
|
-
|
|
3115
|
-
|
|
3116
|
-
if write_comma
|
|
3134
|
+
if comma?
|
|
3135
|
+
check :on_comma
|
|
3117
3136
|
write ","
|
|
3118
|
-
|
|
3119
|
-
|
|
3137
|
+
next_token
|
|
3138
|
+
skip_space
|
|
3139
|
+
wrote_comma = true
|
|
3140
|
+
end
|
|
3141
|
+
if newline
|
|
3120
3142
|
skip_space_or_newline
|
|
3143
|
+
write_line
|
|
3144
|
+
write_indent
|
|
3121
3145
|
end
|
|
3146
|
+
end
|
|
3122
3147
|
|
|
3123
|
-
|
|
3124
|
-
if
|
|
3125
|
-
|
|
3148
|
+
if rest
|
|
3149
|
+
if wrote_comma
|
|
3150
|
+
consume_space
|
|
3126
3151
|
end
|
|
3152
|
+
|
|
3153
|
+
# pattern like `[a,]` will make `rest` as `[:var_field, nil]`
|
|
3154
|
+
if (var_name_node = rest[1]) || current_token_value == "*"
|
|
3155
|
+
consume_op "*"
|
|
3156
|
+
if var_name_node
|
|
3157
|
+
visit rest
|
|
3158
|
+
end
|
|
3159
|
+
end
|
|
3160
|
+
elsif wrote_comma && !newline?
|
|
3161
|
+
# In Ruby 3.3, rest is nil when the code is like `[a,]`. Insert a space after comma at here.
|
|
3162
|
+
consume_space
|
|
3127
3163
|
end
|
|
3128
3164
|
|
|
3129
3165
|
if post_rest
|
|
@@ -3133,36 +3169,13 @@ class Rufo::Formatter
|
|
|
3133
3169
|
consume_space
|
|
3134
3170
|
next_token
|
|
3135
3171
|
|
|
3136
|
-
visit_literal_elements post_rest, inside_array: true, token_column: token_column, keep_final_newline: !
|
|
3172
|
+
visit_literal_elements post_rest, inside_array: true, token_column: token_column, keep_final_newline: !left_paren_token
|
|
3137
3173
|
end
|
|
3138
3174
|
|
|
3139
3175
|
skip_space
|
|
3140
|
-
if has_bracket
|
|
3141
|
-
consume_token :on_rbracket
|
|
3142
|
-
end
|
|
3143
|
-
end
|
|
3144
|
-
|
|
3145
|
-
def visit_constant_pattern(node)
|
|
3146
|
-
# [:aryptn, const_ref, args]
|
|
3147
|
-
_, const_ref, args = node
|
|
3148
|
-
|
|
3149
|
-
visit const_ref
|
|
3150
|
-
|
|
3151
|
-
parens = current_token_kind == :on_lparen
|
|
3152
|
-
if parens
|
|
3153
|
-
consume_token :on_lparen
|
|
3154
|
-
else
|
|
3155
|
-
consume_token :on_lbracket
|
|
3156
|
-
end
|
|
3157
3176
|
|
|
3158
|
-
|
|
3159
|
-
|
|
3160
|
-
|
|
3161
|
-
skip_space
|
|
3162
|
-
if parens
|
|
3163
|
-
consume_token :on_rparen
|
|
3164
|
-
else
|
|
3165
|
-
consume_token :on_rbracket
|
|
3177
|
+
if right_paren_token
|
|
3178
|
+
consume_token right_paren_token
|
|
3166
3179
|
end
|
|
3167
3180
|
end
|
|
3168
3181
|
|
|
@@ -4194,4 +4207,15 @@ class Rufo::Formatter
|
|
|
4194
4207
|
node[2][0]
|
|
4195
4208
|
end
|
|
4196
4209
|
end
|
|
4210
|
+
|
|
4211
|
+
def block_arg_type(node)
|
|
4212
|
+
case node
|
|
4213
|
+
when nil
|
|
4214
|
+
:anonymous
|
|
4215
|
+
when false
|
|
4216
|
+
:no_arg
|
|
4217
|
+
else
|
|
4218
|
+
node
|
|
4219
|
+
end
|
|
4220
|
+
end
|
|
4197
4221
|
end
|
data/lib/rufo/version.rb
CHANGED
data/rufo.gemspec
CHANGED
|
@@ -22,15 +22,4 @@ Gem::Specification.new do |spec|
|
|
|
22
22
|
spec.require_paths = ["lib"]
|
|
23
23
|
spec.required_ruby_version = ">= 3.0.0"
|
|
24
24
|
spec.metadata["rubygems_mfa_required"] = "true"
|
|
25
|
-
|
|
26
|
-
spec.add_development_dependency "bundler", ">= 1.15"
|
|
27
|
-
spec.add_development_dependency "byebug", "~> 11.1.3"
|
|
28
|
-
spec.add_development_dependency "guard-rspec", "~> 4.0"
|
|
29
|
-
spec.add_development_dependency "rake", "~> 13.0"
|
|
30
|
-
spec.add_development_dependency "rexml", "~> 3.2.5"
|
|
31
|
-
spec.add_development_dependency "rspec", "~> 3.0"
|
|
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"
|
|
36
25
|
end
|
metadata
CHANGED
|
@@ -1,155 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rufo
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.18.
|
|
4
|
+
version: 0.18.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ary Borenszweig
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: exe
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
12
|
-
dependencies:
|
|
13
|
-
- !ruby/object:Gem::Dependency
|
|
14
|
-
name: bundler
|
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
|
16
|
-
requirements:
|
|
17
|
-
- - ">="
|
|
18
|
-
- !ruby/object:Gem::Version
|
|
19
|
-
version: '1.15'
|
|
20
|
-
type: :development
|
|
21
|
-
prerelease: false
|
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
-
requirements:
|
|
24
|
-
- - ">="
|
|
25
|
-
- !ruby/object:Gem::Version
|
|
26
|
-
version: '1.15'
|
|
27
|
-
- !ruby/object:Gem::Dependency
|
|
28
|
-
name: byebug
|
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
|
30
|
-
requirements:
|
|
31
|
-
- - "~>"
|
|
32
|
-
- !ruby/object:Gem::Version
|
|
33
|
-
version: 11.1.3
|
|
34
|
-
type: :development
|
|
35
|
-
prerelease: false
|
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
-
requirements:
|
|
38
|
-
- - "~>"
|
|
39
|
-
- !ruby/object:Gem::Version
|
|
40
|
-
version: 11.1.3
|
|
41
|
-
- !ruby/object:Gem::Dependency
|
|
42
|
-
name: guard-rspec
|
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
|
44
|
-
requirements:
|
|
45
|
-
- - "~>"
|
|
46
|
-
- !ruby/object:Gem::Version
|
|
47
|
-
version: '4.0'
|
|
48
|
-
type: :development
|
|
49
|
-
prerelease: false
|
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
-
requirements:
|
|
52
|
-
- - "~>"
|
|
53
|
-
- !ruby/object:Gem::Version
|
|
54
|
-
version: '4.0'
|
|
55
|
-
- !ruby/object:Gem::Dependency
|
|
56
|
-
name: rake
|
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
|
58
|
-
requirements:
|
|
59
|
-
- - "~>"
|
|
60
|
-
- !ruby/object:Gem::Version
|
|
61
|
-
version: '13.0'
|
|
62
|
-
type: :development
|
|
63
|
-
prerelease: false
|
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
-
requirements:
|
|
66
|
-
- - "~>"
|
|
67
|
-
- !ruby/object:Gem::Version
|
|
68
|
-
version: '13.0'
|
|
69
|
-
- !ruby/object:Gem::Dependency
|
|
70
|
-
name: rexml
|
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
|
72
|
-
requirements:
|
|
73
|
-
- - "~>"
|
|
74
|
-
- !ruby/object:Gem::Version
|
|
75
|
-
version: 3.2.5
|
|
76
|
-
type: :development
|
|
77
|
-
prerelease: false
|
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
-
requirements:
|
|
80
|
-
- - "~>"
|
|
81
|
-
- !ruby/object:Gem::Version
|
|
82
|
-
version: 3.2.5
|
|
83
|
-
- !ruby/object:Gem::Dependency
|
|
84
|
-
name: rspec
|
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
|
86
|
-
requirements:
|
|
87
|
-
- - "~>"
|
|
88
|
-
- !ruby/object:Gem::Version
|
|
89
|
-
version: '3.0'
|
|
90
|
-
type: :development
|
|
91
|
-
prerelease: false
|
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
-
requirements:
|
|
94
|
-
- - "~>"
|
|
95
|
-
- !ruby/object:Gem::Version
|
|
96
|
-
version: '3.0'
|
|
97
|
-
- !ruby/object:Gem::Dependency
|
|
98
|
-
name: rspec_junit_formatter
|
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
|
100
|
-
requirements:
|
|
101
|
-
- - "~>"
|
|
102
|
-
- !ruby/object:Gem::Version
|
|
103
|
-
version: 0.6.0
|
|
104
|
-
type: :development
|
|
105
|
-
prerelease: false
|
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
107
|
-
requirements:
|
|
108
|
-
- - "~>"
|
|
109
|
-
- !ruby/object:Gem::Version
|
|
110
|
-
version: 0.6.0
|
|
111
|
-
- !ruby/object:Gem::Dependency
|
|
112
|
-
name: rubocop
|
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
|
114
|
-
requirements:
|
|
115
|
-
- - "~>"
|
|
116
|
-
- !ruby/object:Gem::Version
|
|
117
|
-
version: 1.44.1
|
|
118
|
-
type: :development
|
|
119
|
-
prerelease: false
|
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
121
|
-
requirements:
|
|
122
|
-
- - "~>"
|
|
123
|
-
- !ruby/object:Gem::Version
|
|
124
|
-
version: 1.44.1
|
|
125
|
-
- !ruby/object:Gem::Dependency
|
|
126
|
-
name: simplecov
|
|
127
|
-
requirement: !ruby/object:Gem::Requirement
|
|
128
|
-
requirements:
|
|
129
|
-
- - "~>"
|
|
130
|
-
- !ruby/object:Gem::Version
|
|
131
|
-
version: 0.22.0
|
|
132
|
-
type: :development
|
|
133
|
-
prerelease: false
|
|
134
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
135
|
-
requirements:
|
|
136
|
-
- - "~>"
|
|
137
|
-
- !ruby/object:Gem::Version
|
|
138
|
-
version: 0.22.0
|
|
139
|
-
- !ruby/object:Gem::Dependency
|
|
140
|
-
name: simplecov-cobertura
|
|
141
|
-
requirement: !ruby/object:Gem::Requirement
|
|
142
|
-
requirements:
|
|
143
|
-
- - "~>"
|
|
144
|
-
- !ruby/object:Gem::Version
|
|
145
|
-
version: '2.1'
|
|
146
|
-
type: :development
|
|
147
|
-
prerelease: false
|
|
148
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
149
|
-
requirements:
|
|
150
|
-
- - "~>"
|
|
151
|
-
- !ruby/object:Gem::Version
|
|
152
|
-
version: '2.1'
|
|
10
|
+
date: 2025-12-24 00:00:00.000000000 Z
|
|
11
|
+
dependencies: []
|
|
153
12
|
description: Fast and unobtrusive Ruby code formatter
|
|
154
13
|
email:
|
|
155
14
|
- asterite@gmail.com
|
|
@@ -195,7 +54,6 @@ licenses:
|
|
|
195
54
|
- MIT
|
|
196
55
|
metadata:
|
|
197
56
|
rubygems_mfa_required: 'true'
|
|
198
|
-
post_install_message:
|
|
199
57
|
rdoc_options: []
|
|
200
58
|
require_paths:
|
|
201
59
|
- lib
|
|
@@ -210,8 +68,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
210
68
|
- !ruby/object:Gem::Version
|
|
211
69
|
version: '0'
|
|
212
70
|
requirements: []
|
|
213
|
-
rubygems_version: 3.
|
|
214
|
-
signing_key:
|
|
71
|
+
rubygems_version: 3.6.2
|
|
215
72
|
specification_version: 4
|
|
216
73
|
summary: Ruby code formatter
|
|
217
74
|
test_files: []
|