rubocop 0.51.0 → 0.52.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 +4 -4
- data/README.md +1 -2
- data/config/default.yml +86 -10
- data/config/disabled.yml +9 -4
- data/config/enabled.yml +1105 -1006
- data/lib/rubocop.rb +30 -3
- data/lib/rubocop/ast/builder.rb +2 -0
- data/lib/rubocop/ast/node.rb +24 -2
- data/lib/rubocop/ast/node/args_node.rb +17 -0
- data/lib/rubocop/ast/node/array_node.rb +1 -1
- data/lib/rubocop/ast/node/mixin/basic_literal_node.rb +16 -0
- data/lib/rubocop/ast/node/send_node.rb +20 -0
- data/lib/rubocop/ast/node/str_node.rb +14 -0
- data/lib/rubocop/ast/node/symbol_node.rb +20 -0
- data/lib/rubocop/ast/traversal.rb +4 -4
- data/lib/rubocop/cli.rb +45 -4
- data/lib/rubocop/comment_config.rb +2 -5
- data/lib/rubocop/config.rb +42 -8
- data/lib/rubocop/config_loader.rb +39 -100
- data/lib/rubocop/config_loader_resolver.rb +99 -2
- data/lib/rubocop/cop/autocorrect_logic.rb +1 -1
- data/lib/rubocop/cop/bundler/duplicated_gem.rb +7 -7
- data/lib/rubocop/cop/bundler/insecure_protocol_source.rb +4 -3
- data/lib/rubocop/cop/bundler/ordered_gems.rb +2 -2
- data/lib/rubocop/cop/cop.rb +16 -46
- data/lib/rubocop/cop/gemspec/duplicated_assignment.rb +102 -0
- data/lib/rubocop/cop/gemspec/ordered_dependencies.rb +3 -2
- data/lib/rubocop/cop/gemspec/required_ruby_version.rb +87 -0
- data/lib/rubocop/cop/generator.rb +23 -4
- data/lib/rubocop/cop/internal_affairs.rb +1 -1
- data/lib/rubocop/cop/internal_affairs/node_destructuring.rb +46 -0
- data/lib/rubocop/cop/internal_affairs/node_type_predicate.rb +2 -2
- data/lib/rubocop/cop/internal_affairs/offense_location_keyword.rb +9 -8
- data/lib/rubocop/cop/internal_affairs/redundant_location_argument.rb +1 -1
- data/lib/rubocop/cop/internal_affairs/redundant_message_argument.rb +1 -1
- data/lib/rubocop/cop/layout/access_modifier_indentation.rb +4 -7
- data/lib/rubocop/cop/layout/align_hash.rb +16 -16
- data/lib/rubocop/cop/layout/align_parameters.rb +6 -12
- data/lib/rubocop/cop/layout/block_end_newline.rb +19 -5
- data/lib/rubocop/cop/layout/case_indentation.rb +14 -17
- data/lib/rubocop/cop/layout/class_structure.rb +306 -0
- data/lib/rubocop/cop/layout/closing_parenthesis_indentation.rb +1 -0
- data/lib/rubocop/cop/layout/comment_indentation.rb +39 -2
- data/lib/rubocop/cop/layout/dot_position.rb +22 -13
- data/lib/rubocop/cop/layout/else_alignment.rb +6 -6
- data/lib/rubocop/cop/layout/empty_line_between_defs.rb +17 -17
- data/lib/rubocop/cop/layout/empty_lines.rb +15 -1
- data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +3 -2
- data/lib/rubocop/cop/layout/empty_lines_around_arguments.rb +89 -0
- data/lib/rubocop/cop/layout/empty_lines_around_begin_body.rb +2 -2
- data/lib/rubocop/cop/layout/empty_lines_around_block_body.rb +4 -8
- data/lib/rubocop/cop/layout/empty_lines_around_class_body.rb +30 -5
- data/lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb +7 -3
- data/lib/rubocop/cop/layout/empty_lines_around_method_body.rb +2 -2
- data/lib/rubocop/cop/layout/empty_lines_around_module_body.rb +22 -7
- data/lib/rubocop/cop/layout/end_of_line.rb +1 -1
- data/lib/rubocop/cop/layout/extra_spacing.rb +21 -24
- data/lib/rubocop/cop/layout/first_parameter_indentation.rb +4 -1
- data/lib/rubocop/cop/layout/indent_array.rb +67 -20
- data/lib/rubocop/cop/layout/indent_hash.rb +70 -25
- data/lib/rubocop/cop/layout/indent_heredoc.rb +51 -11
- data/lib/rubocop/cop/layout/indentation_width.rb +24 -17
- data/lib/rubocop/cop/layout/initial_indentation.rb +7 -5
- data/lib/rubocop/cop/layout/leading_comment_space.rb +2 -2
- data/lib/rubocop/cop/layout/multiline_array_brace_layout.rb +47 -14
- data/lib/rubocop/cop/layout/multiline_assignment_layout.rb +10 -9
- data/lib/rubocop/cop/layout/multiline_block_layout.rb +19 -16
- data/lib/rubocop/cop/layout/multiline_hash_brace_layout.rb +46 -13
- data/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +9 -10
- data/lib/rubocop/cop/layout/multiline_method_definition_brace_layout.rb +4 -0
- data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +9 -3
- data/lib/rubocop/cop/layout/space_after_colon.rb +4 -4
- data/lib/rubocop/cop/layout/space_after_comma.rb +3 -3
- data/lib/rubocop/cop/layout/space_after_method_name.rb +4 -4
- data/lib/rubocop/cop/layout/space_after_semicolon.rb +8 -1
- data/lib/rubocop/cop/layout/space_around_block_parameters.rb +16 -19
- data/lib/rubocop/cop/layout/space_around_equals_in_parameter_default.rb +27 -16
- data/lib/rubocop/cop/layout/space_around_keyword.rb +13 -11
- data/lib/rubocop/cop/layout/space_around_operators.rb +26 -13
- data/lib/rubocop/cop/layout/space_before_block_braces.rb +10 -10
- data/lib/rubocop/cop/layout/space_before_comma.rb +12 -1
- data/lib/rubocop/cop/layout/space_before_comment.rb +2 -4
- data/lib/rubocop/cop/layout/space_before_first_arg.rb +4 -3
- data/lib/rubocop/cop/layout/space_before_semicolon.rb +1 -1
- data/lib/rubocop/cop/layout/space_in_lambda_literal.rb +6 -12
- data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +235 -0
- data/lib/rubocop/cop/layout/space_inside_array_percent_literal.rb +3 -3
- data/lib/rubocop/cop/layout/space_inside_block_braces.rb +87 -16
- data/lib/rubocop/cop/layout/space_inside_hash_literal_braces.rb +57 -34
- data/lib/rubocop/cop/layout/space_inside_parens.rb +31 -3
- data/lib/rubocop/cop/layout/space_inside_range_literal.rb +15 -15
- data/lib/rubocop/cop/layout/space_inside_reference_brackets.rb +81 -0
- data/lib/rubocop/cop/layout/space_inside_string_interpolation.rb +24 -13
- data/lib/rubocop/cop/layout/tab.rb +2 -2
- data/lib/rubocop/cop/layout/trailing_blank_lines.rb +7 -7
- data/lib/rubocop/cop/lint/ambiguous_block_association.rb +11 -20
- data/lib/rubocop/cop/lint/block_alignment.rb +26 -23
- data/lib/rubocop/cop/lint/boolean_symbol.rb +1 -1
- data/lib/rubocop/cop/lint/def_end_alignment.rb +5 -10
- data/lib/rubocop/cop/lint/else_layout.rb +2 -2
- data/lib/rubocop/cop/lint/end_alignment.rb +13 -14
- data/lib/rubocop/cop/lint/ineffective_access_modifier.rb +3 -4
- data/lib/rubocop/cop/lint/inherit_exception.rb +10 -14
- data/lib/rubocop/cop/lint/missing_cop_enable_directive.rb +81 -0
- data/lib/rubocop/cop/lint/nested_percent_literal.rb +58 -0
- data/lib/rubocop/cop/lint/non_local_exit_from_iterator.rb +2 -2
- data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +1 -1
- data/lib/rubocop/cop/lint/percent_string_array.rb +14 -14
- data/lib/rubocop/cop/lint/percent_symbol_array.rb +11 -11
- data/lib/rubocop/cop/lint/redundant_with_index.rb +6 -3
- data/lib/rubocop/cop/lint/redundant_with_object.rb +1 -1
- data/lib/rubocop/cop/lint/require_parentheses.rb +3 -1
- data/lib/rubocop/cop/lint/rescue_type.rb +3 -3
- data/lib/rubocop/cop/lint/script_permission.rb +1 -0
- data/lib/rubocop/cop/lint/shadowed_argument.rb +146 -0
- data/lib/rubocop/cop/lint/string_conversion_in_interpolation.rb +6 -6
- data/lib/rubocop/cop/lint/unneeded_disable.rb +29 -11
- data/lib/rubocop/cop/lint/unneeded_require_statement.rb +2 -1
- data/lib/rubocop/cop/lint/unneeded_splat_expansion.rb +43 -17
- data/lib/rubocop/cop/message_annotator.rb +4 -2
- data/lib/rubocop/cop/metrics/abc_size.rb +2 -2
- data/lib/rubocop/cop/metrics/class_length.rb +3 -1
- data/lib/rubocop/cop/metrics/cyclomatic_complexity.rb +2 -1
- data/lib/rubocop/cop/metrics/line_length.rb +2 -2
- data/lib/rubocop/cop/metrics/module_length.rb +3 -1
- data/lib/rubocop/cop/metrics/parameter_lists.rb +9 -2
- data/lib/rubocop/cop/metrics/perceived_complexity.rb +2 -1
- data/lib/rubocop/cop/mixin/documentation_comment.rb +1 -1
- data/lib/rubocop/cop/mixin/empty_lines_around_body.rb +7 -5
- data/lib/rubocop/cop/mixin/empty_parameter.rb +23 -0
- data/lib/rubocop/cop/mixin/end_keyword_alignment.rb +7 -3
- data/lib/rubocop/cop/mixin/heredoc.rb +19 -19
- data/lib/rubocop/cop/mixin/method_complexity.rb +32 -8
- data/lib/rubocop/cop/mixin/multiline_expression_indentation.rb +7 -3
- data/lib/rubocop/cop/mixin/multiline_literal_brace_layout.rb +6 -4
- data/lib/rubocop/cop/mixin/negative_conditional.rb +3 -0
- data/lib/rubocop/cop/mixin/ordered_gem_node.rb +16 -12
- data/lib/rubocop/cop/mixin/parentheses.rb +12 -0
- data/lib/rubocop/cop/mixin/space_after_punctuation.rb +8 -8
- data/lib/rubocop/cop/mixin/space_before_punctuation.rb +10 -10
- data/lib/rubocop/cop/mixin/statement_modifier.rb +7 -17
- data/lib/rubocop/cop/mixin/surrounding_space.rb +95 -8
- data/lib/rubocop/cop/mixin/too_many_lines.rb +2 -2
- data/lib/rubocop/cop/mixin/trailing_comma.rb +22 -14
- data/lib/rubocop/cop/mixin/unused_argument.rb +3 -40
- data/lib/rubocop/cop/naming/accessor_method_name.rb +20 -10
- data/lib/rubocop/cop/naming/ascii_identifiers.rb +33 -0
- data/lib/rubocop/cop/naming/binary_operator_parameter_name.rb +5 -4
- data/lib/rubocop/cop/naming/class_and_module_camel_case.rb +16 -12
- data/lib/rubocop/cop/naming/constant_name.rb +32 -3
- data/lib/rubocop/cop/naming/file_name.rb +19 -8
- data/lib/rubocop/cop/naming/heredoc_delimiter_case.rb +10 -16
- data/lib/rubocop/cop/naming/method_name.rb +20 -14
- data/lib/rubocop/cop/naming/predicate_name.rb +7 -3
- data/lib/rubocop/cop/naming/variable_name.rb +17 -2
- data/lib/rubocop/cop/naming/variable_number.rb +10 -27
- data/lib/rubocop/cop/offense.rb +6 -1
- data/lib/rubocop/cop/performance/case_when_splat.rb +2 -6
- data/lib/rubocop/cop/performance/casecmp.rb +5 -4
- data/lib/rubocop/cop/performance/compare_with_block.rb +13 -7
- data/lib/rubocop/cop/performance/count.rb +5 -4
- data/lib/rubocop/cop/performance/detect.rb +7 -4
- data/lib/rubocop/cop/performance/double_start_end_with.rb +2 -7
- data/lib/rubocop/cop/performance/end_with.rb +2 -2
- data/lib/rubocop/cop/performance/flat_map.rb +3 -2
- data/lib/rubocop/cop/performance/hash_each_methods.rb +41 -40
- data/lib/rubocop/cop/performance/lstrip_rstrip.rb +5 -4
- data/lib/rubocop/cop/performance/redundant_block_call.rb +22 -22
- data/lib/rubocop/cop/performance/redundant_match.rb +2 -2
- data/lib/rubocop/cop/performance/redundant_merge.rb +6 -4
- data/lib/rubocop/cop/performance/redundant_sort_by.rb +4 -4
- data/lib/rubocop/cop/performance/regexp_match.rb +3 -2
- data/lib/rubocop/cop/performance/size.rb +2 -2
- data/lib/rubocop/cop/performance/start_with.rb +2 -2
- data/lib/rubocop/cop/performance/string_replacement.rb +4 -4
- data/lib/rubocop/cop/performance/times_map.rb +14 -15
- data/lib/rubocop/cop/performance/uri_default_parser.rb +3 -3
- data/lib/rubocop/cop/rails/action_filter.rb +22 -0
- data/lib/rubocop/cop/rails/active_support_aliases.rb +2 -2
- data/lib/rubocop/cop/rails/application_job.rb +4 -2
- data/lib/rubocop/cop/rails/application_record.rb +4 -2
- data/lib/rubocop/cop/rails/create_table_with_timestamps.rb +82 -0
- data/lib/rubocop/cop/rails/delegate.rb +20 -25
- data/lib/rubocop/cop/rails/delegate_allow_blank.rb +2 -2
- data/lib/rubocop/cop/rails/environment_comparison.rb +66 -0
- data/lib/rubocop/cop/rails/exit.rb +7 -0
- data/lib/rubocop/cop/rails/has_and_belongs_to_many.rb +7 -0
- data/lib/rubocop/cop/rails/has_many_or_has_one_dependent.rb +6 -2
- data/lib/rubocop/cop/rails/http_positional_arguments.rb +36 -41
- data/lib/rubocop/cop/rails/inverse_of.rb +96 -0
- data/lib/rubocop/cop/rails/lexically_scoped_action_filter.rb +112 -0
- data/lib/rubocop/cop/rails/output.rb +9 -0
- data/lib/rubocop/cop/rails/output_safety.rb +14 -20
- data/lib/rubocop/cop/rails/pluralization_grammar.rb +8 -8
- data/lib/rubocop/cop/rails/presence.rb +105 -0
- data/lib/rubocop/cop/rails/read_write_attribute.rb +10 -10
- data/lib/rubocop/cop/rails/redundant_receiver_in_with_options.rb +91 -0
- data/lib/rubocop/cop/rails/relative_date_constant.rb +9 -9
- data/lib/rubocop/cop/rails/reversible_migration.rb +3 -4
- data/lib/rubocop/cop/rails/safe_navigation.rb +5 -6
- data/lib/rubocop/cop/rails/save_bang.rb +2 -2
- data/lib/rubocop/cop/rails/uniq_before_pluck.rb +1 -1
- data/lib/rubocop/cop/rails/validation.rb +7 -7
- data/lib/rubocop/cop/security/json_load.rb +4 -2
- data/lib/rubocop/cop/security/marshal_load.rb +4 -2
- data/lib/rubocop/cop/style/alias.rb +24 -26
- data/lib/rubocop/cop/style/and_or.rb +34 -28
- data/lib/rubocop/cop/style/array_join.rb +9 -0
- data/lib/rubocop/cop/style/ascii_comments.rb +24 -4
- data/lib/rubocop/cop/style/attr.rb +14 -4
- data/lib/rubocop/cop/style/auto_resource_cleanup.rb +5 -3
- data/lib/rubocop/cop/style/bare_percent_literals.rb +31 -10
- data/lib/rubocop/cop/style/block_comments.rb +14 -2
- data/lib/rubocop/cop/style/block_delimiters.rb +80 -15
- data/lib/rubocop/cop/style/braces_around_hash_parameters.rb +81 -48
- data/lib/rubocop/cop/style/case_equality.rb +12 -0
- data/lib/rubocop/cop/style/character_literal.rb +10 -0
- data/lib/rubocop/cop/style/class_and_module_children.rb +6 -2
- data/lib/rubocop/cop/style/class_check.rb +28 -9
- data/lib/rubocop/cop/style/class_methods.rb +8 -8
- data/lib/rubocop/cop/style/class_vars.rb +4 -3
- data/lib/rubocop/cop/style/collection_methods.rb +4 -2
- data/lib/rubocop/cop/style/colon_method_call.rb +16 -0
- data/lib/rubocop/cop/style/colon_method_definition.rb +36 -0
- data/lib/rubocop/cop/style/command_literal.rb +70 -21
- data/lib/rubocop/cop/style/comment_annotation.rb +35 -10
- data/lib/rubocop/cop/style/commented_keyword.rb +12 -9
- data/lib/rubocop/cop/style/conditional_assignment.rb +10 -12
- data/lib/rubocop/cop/style/copyright.rb +19 -20
- data/lib/rubocop/cop/style/date_time.rb +2 -2
- data/lib/rubocop/cop/style/def_with_parentheses.rb +27 -2
- data/lib/rubocop/cop/style/dir.rb +2 -2
- data/lib/rubocop/cop/style/documentation.rb +17 -2
- data/lib/rubocop/cop/style/each_for_simple_loop.rb +7 -7
- data/lib/rubocop/cop/style/each_with_object.rb +5 -5
- data/lib/rubocop/cop/style/empty_block_parameter.rb +47 -0
- data/lib/rubocop/cop/style/empty_case_condition.rb +2 -2
- data/lib/rubocop/cop/style/empty_else.rb +52 -22
- data/lib/rubocop/cop/style/empty_lambda_parameter.rb +43 -0
- data/lib/rubocop/cop/style/empty_literal.rb +17 -5
- data/lib/rubocop/cop/style/empty_method.rb +4 -10
- data/lib/rubocop/cop/style/encoding.rb +2 -1
- data/lib/rubocop/cop/style/eval_with_location.rb +146 -0
- data/lib/rubocop/cop/style/even_odd.rb +4 -2
- data/lib/rubocop/cop/style/extend_self.rb +92 -0
- data/lib/rubocop/cop/style/flip_flop.rb +11 -0
- data/lib/rubocop/cop/style/format_string.rb +29 -2
- data/lib/rubocop/cop/style/format_string_token.rb +15 -14
- data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +4 -3
- data/lib/rubocop/cop/style/global_vars.rb +11 -1
- data/lib/rubocop/cop/style/hash_syntax.rb +44 -43
- data/lib/rubocop/cop/style/identical_conditional_branches.rb +8 -8
- data/lib/rubocop/cop/style/if_inside_else.rb +10 -10
- data/lib/rubocop/cop/style/if_unless_modifier.rb +7 -7
- data/lib/rubocop/cop/style/if_unless_modifier_of_if_unless.rb +2 -2
- data/lib/rubocop/cop/style/if_with_semicolon.rb +9 -0
- data/lib/rubocop/cop/style/implicit_runtime_error.rb +5 -5
- data/lib/rubocop/cop/style/infinite_loop.rb +2 -2
- data/lib/rubocop/cop/style/lambda.rb +23 -31
- data/lib/rubocop/cop/style/lambda_call.rb +15 -9
- data/lib/rubocop/cop/style/line_end_concatenation.rb +4 -4
- data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +2 -2
- data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +2 -2
- data/lib/rubocop/cop/style/method_def_parentheses.rb +4 -3
- data/lib/rubocop/cop/style/method_missing.rb +8 -8
- data/lib/rubocop/cop/style/min_max.rb +12 -12
- data/lib/rubocop/cop/style/missing_else.rb +5 -4
- data/lib/rubocop/cop/style/mixin_grouping.rb +29 -19
- data/lib/rubocop/cop/style/mixin_usage.rb +8 -10
- data/lib/rubocop/cop/style/module_function.rb +17 -5
- data/lib/rubocop/cop/style/multiline_if_modifier.rb +4 -4
- data/lib/rubocop/cop/style/multiline_if_then.rb +14 -13
- data/lib/rubocop/cop/style/multiline_memoization.rb +8 -14
- data/lib/rubocop/cop/style/mutable_constant.rb +12 -12
- data/lib/rubocop/cop/style/negated_if.rb +22 -30
- data/lib/rubocop/cop/style/negated_while.rb +1 -5
- data/lib/rubocop/cop/style/nested_parenthesized_calls.rb +18 -17
- data/lib/rubocop/cop/style/next.rb +39 -11
- data/lib/rubocop/cop/style/nil_comparison.rb +6 -6
- data/lib/rubocop/cop/style/non_nil_check.rb +25 -22
- data/lib/rubocop/cop/style/not.rb +14 -4
- data/lib/rubocop/cop/style/numeric_literal_prefix.rb +6 -6
- data/lib/rubocop/cop/style/numeric_literals.rb +7 -7
- data/lib/rubocop/cop/style/numeric_predicate.rb +14 -18
- data/lib/rubocop/cop/style/one_line_conditional.rb +4 -4
- data/lib/rubocop/cop/style/option_hash.rb +11 -14
- data/lib/rubocop/cop/style/or_assignment.rb +2 -2
- data/lib/rubocop/cop/style/parallel_assignment.rb +13 -13
- data/lib/rubocop/cop/style/parentheses_around_condition.rb +19 -3
- data/lib/rubocop/cop/style/percent_literal_delimiters.rb +24 -3
- data/lib/rubocop/cop/style/percent_q_literals.rb +27 -6
- data/lib/rubocop/cop/style/perl_backrefs.rb +7 -0
- data/lib/rubocop/cop/style/preferred_hash_methods.rb +6 -10
- data/lib/rubocop/cop/style/proc.rb +8 -0
- data/lib/rubocop/cop/style/raise_args.rb +8 -14
- data/lib/rubocop/cop/style/random_with_offset.rb +160 -0
- data/lib/rubocop/cop/style/redundant_begin.rb +14 -4
- data/lib/rubocop/cop/style/redundant_conditional.rb +9 -8
- data/lib/rubocop/cop/style/redundant_return.rb +5 -4
- data/lib/rubocop/cop/style/redundant_self.rb +25 -26
- data/lib/rubocop/cop/style/regexp_literal.rb +74 -21
- data/lib/rubocop/cop/style/rescue_modifier.rb +11 -0
- data/lib/rubocop/cop/style/rescue_standard_error.rb +122 -0
- data/lib/rubocop/cop/style/return_nil.rb +4 -8
- data/lib/rubocop/cop/style/safe_navigation.rb +20 -2
- data/lib/rubocop/cop/style/self_assignment.rb +13 -13
- data/lib/rubocop/cop/style/semicolon.rb +18 -8
- data/lib/rubocop/cop/style/send.rb +9 -0
- data/lib/rubocop/cop/style/signal_exception.rb +100 -0
- data/lib/rubocop/cop/style/single_line_block_params.rb +2 -2
- data/lib/rubocop/cop/style/single_line_methods.rb +20 -8
- data/lib/rubocop/cop/style/special_global_vars.rb +16 -11
- data/lib/rubocop/cop/style/stabby_lambda_parentheses.rb +7 -12
- data/lib/rubocop/cop/style/stderr_puts.rb +5 -3
- data/lib/rubocop/cop/style/string_hash_keys.rb +36 -0
- data/lib/rubocop/cop/style/string_literals.rb +22 -0
- data/lib/rubocop/cop/style/string_literals_in_interpolation.rb +2 -8
- data/lib/rubocop/cop/style/string_methods.rb +18 -7
- data/lib/rubocop/cop/style/symbol_array.rb +5 -9
- data/lib/rubocop/cop/style/symbol_proc.rb +5 -4
- data/lib/rubocop/cop/style/ternary_parentheses.rb +31 -40
- data/lib/rubocop/cop/style/trailing_body_on_method_definition.rb +101 -0
- data/lib/rubocop/cop/style/trailing_comma_in_arguments.rb +20 -6
- data/lib/rubocop/cop/style/trailing_comma_in_literal.rb +22 -7
- data/lib/rubocop/cop/style/trailing_method_end_statement.rb +95 -0
- data/lib/rubocop/cop/style/trailing_underscore_variable.rb +8 -4
- data/lib/rubocop/cop/style/trivial_accessors.rb +32 -10
- data/lib/rubocop/cop/style/unless_else.rb +15 -0
- data/lib/rubocop/cop/style/unneeded_capital_w.rb +17 -7
- data/lib/rubocop/cop/style/unneeded_interpolation.rb +14 -18
- data/lib/rubocop/cop/style/unneeded_percent_q.rb +13 -12
- data/lib/rubocop/cop/style/variable_interpolation.rb +20 -9
- data/lib/rubocop/cop/style/when_then.rb +13 -0
- data/lib/rubocop/cop/style/while_until_do.rb +26 -4
- data/lib/rubocop/cop/style/while_until_modifier.rb +25 -6
- data/lib/rubocop/cop/style/word_array.rb +4 -8
- data/lib/rubocop/cop/style/yoda_condition.rb +10 -16
- data/lib/rubocop/cop/style/zero_length_predicate.rb +23 -15
- data/lib/rubocop/cop/util.rb +42 -33
- data/lib/rubocop/cop/variable_force.rb +1 -1
- data/lib/rubocop/cop/variable_force/assignment.rb +4 -2
- data/lib/rubocop/cop/variable_force/scope.rb +1 -5
- data/lib/rubocop/cop/variable_force/variable.rb +1 -1
- data/lib/rubocop/formatter/disabled_config_formatter.rb +2 -3
- data/lib/rubocop/formatter/formatter_set.rb +2 -1
- data/lib/rubocop/formatter/json_formatter.rb +9 -3
- data/lib/rubocop/formatter/quiet_formatter.rb +13 -0
- data/lib/rubocop/node_pattern.rb +2 -3
- data/lib/rubocop/options.rb +8 -8
- data/lib/rubocop/path_util.rb +15 -3
- data/lib/rubocop/processed_source.rb +5 -2
- data/lib/rubocop/rspec/shared_contexts.rb +4 -0
- data/lib/rubocop/runner.rb +1 -1
- data/lib/rubocop/token.rb +74 -0
- data/lib/rubocop/version.rb +1 -1
- metadata +37 -10
- data/lib/rubocop/cop/internal_affairs/deprecated_positional_arguments.rb +0 -81
- data/lib/rubocop/cop/layout/space_inside_brackets.rb +0 -20
- data/lib/rubocop/cop/lint/rescue_without_error_class.rb +0 -41
- data/lib/rubocop/cop/mixin/space_inside.rb +0 -76
@@ -30,7 +30,7 @@ module RuboCop
|
|
30
30
|
return if node.keywords?
|
31
31
|
|
32
32
|
left_brace = node.loc.begin
|
33
|
-
space_plus_brace = range_with_surrounding_space(left_brace)
|
33
|
+
space_plus_brace = range_with_surrounding_space(range: left_brace)
|
34
34
|
used_style =
|
35
35
|
space_plus_brace.source.start_with?('{') ? :no_space : :space
|
36
36
|
|
@@ -41,6 +41,15 @@ module RuboCop
|
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
44
|
+
def autocorrect(range)
|
45
|
+
lambda do |corrector|
|
46
|
+
case range.source
|
47
|
+
when /\s/ then corrector.remove(range)
|
48
|
+
else corrector.insert_before(range, ' ')
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
44
53
|
private
|
45
54
|
|
46
55
|
def check_empty(left_brace, space_plus_brace, used_style)
|
@@ -89,15 +98,6 @@ module RuboCop
|
|
89
98
|
end
|
90
99
|
end
|
91
100
|
|
92
|
-
def autocorrect(range)
|
93
|
-
lambda do |corrector|
|
94
|
-
case range.source
|
95
|
-
when /\s/ then corrector.remove(range)
|
96
|
-
else corrector.insert_before(range, ' ')
|
97
|
-
end
|
98
|
-
end
|
99
|
-
end
|
100
|
-
|
101
101
|
def empty_braces?(loc)
|
102
102
|
loc.begin.end_pos == loc.end.begin_pos
|
103
103
|
end
|
@@ -4,11 +4,22 @@ module RuboCop
|
|
4
4
|
module Cop
|
5
5
|
module Layout
|
6
6
|
# Checks for comma (,) preceded by space.
|
7
|
+
#
|
8
|
+
# @example
|
9
|
+
# # bad
|
10
|
+
# [1 , 2 , 3]
|
11
|
+
# a(1 , 2)
|
12
|
+
# each { |a , b| }
|
13
|
+
#
|
14
|
+
# # good
|
15
|
+
# [1, 2, 3]
|
16
|
+
# a(1, 2)
|
17
|
+
# each { |a, b| }
|
7
18
|
class SpaceBeforeComma < Cop
|
8
19
|
include SpaceBeforePunctuation
|
9
20
|
|
10
21
|
def kind(token)
|
11
|
-
'comma' if token.
|
22
|
+
'comma' if token.comma?
|
12
23
|
end
|
13
24
|
end
|
14
25
|
end
|
@@ -17,14 +17,12 @@ module RuboCop
|
|
17
17
|
|
18
18
|
def investigate(processed_source)
|
19
19
|
processed_source.tokens.each_cons(2) do |t1, t2|
|
20
|
-
next unless t2.
|
21
|
-
next unless t1.
|
20
|
+
next unless t2.comment?
|
21
|
+
next unless t1.line == t2.line
|
22
22
|
add_offense(t2.pos, location: t2.pos) if t1.pos.end == t2.pos.begin
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
|
-
private
|
27
|
-
|
28
26
|
def autocorrect(range)
|
29
27
|
->(corrector) { corrector.insert_before(range, ' ') }
|
30
28
|
end
|
@@ -11,12 +11,12 @@ module RuboCop
|
|
11
11
|
# config parameter is true.
|
12
12
|
#
|
13
13
|
# @example
|
14
|
-
#
|
14
|
+
# # bad
|
15
15
|
# something x
|
16
16
|
# something y, z
|
17
17
|
# something'hello'
|
18
18
|
#
|
19
|
-
#
|
19
|
+
# # good
|
20
20
|
# something x
|
21
21
|
# something y, z
|
22
22
|
# something 'hello'
|
@@ -32,7 +32,8 @@ module RuboCop
|
|
32
32
|
return unless expect_params_after_method_name?(node)
|
33
33
|
|
34
34
|
first_arg = node.first_argument.source_range
|
35
|
-
first_arg_with_space = range_with_surrounding_space(first_arg,
|
35
|
+
first_arg_with_space = range_with_surrounding_space(range: first_arg,
|
36
|
+
side: :left)
|
36
37
|
space = range_between(first_arg_with_space.begin_pos,
|
37
38
|
first_arg.begin_pos)
|
38
39
|
|
@@ -6,24 +6,18 @@ module RuboCop
|
|
6
6
|
# This cop checks for spaces between -> and opening parameter
|
7
7
|
# brace in lambda literals.
|
8
8
|
#
|
9
|
-
# @example
|
10
|
-
#
|
11
|
-
# EnforcedStyle: require_no_space (default)
|
12
|
-
#
|
13
|
-
# @bad
|
9
|
+
# @example EnforcedStyle: require_no_space (default)
|
10
|
+
# # bad
|
14
11
|
# a = -> (x, y) { x + y }
|
15
12
|
#
|
16
|
-
#
|
13
|
+
# # good
|
17
14
|
# a = ->(x, y) { x + y }
|
18
15
|
#
|
19
|
-
# @example
|
20
|
-
#
|
21
|
-
# EnforcedStyle: require_space
|
22
|
-
#
|
23
|
-
# @bad
|
16
|
+
# @example EnforcedStyle: require_space
|
17
|
+
# # bad
|
24
18
|
# a = ->(x, y) { x + y }
|
25
19
|
#
|
26
|
-
#
|
20
|
+
# # good
|
27
21
|
# a = -> (x, y) { x + y }
|
28
22
|
class SpaceInLambdaLiteral < Cop
|
29
23
|
include ConfigurableEnforcedStyle
|
@@ -0,0 +1,235 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RuboCop
|
4
|
+
module Cop
|
5
|
+
module Layout
|
6
|
+
# Checks that brackets used for array literals have or don't have
|
7
|
+
# surrounding space depending on configuration.
|
8
|
+
#
|
9
|
+
# @example EnforcedStyle: space
|
10
|
+
# # The `space` style enforces that array literals have
|
11
|
+
# # surrounding space.
|
12
|
+
#
|
13
|
+
# # bad
|
14
|
+
# array = [a, b, c, d]
|
15
|
+
#
|
16
|
+
# # good
|
17
|
+
# array = [ a, b, c, d ]
|
18
|
+
#
|
19
|
+
# @example EnforcedStyle: no_space
|
20
|
+
# # The `no_space` style enforces that array literals have
|
21
|
+
# # no surrounding space.
|
22
|
+
#
|
23
|
+
# # bad
|
24
|
+
# array = [ a, b, c, d ]
|
25
|
+
#
|
26
|
+
# # good
|
27
|
+
# array = [a, b, c, d]
|
28
|
+
#
|
29
|
+
# @example EnforcedStyle: compact
|
30
|
+
# # The `compact` style normally requires a space inside
|
31
|
+
# # array brackets, with the exception that successive left
|
32
|
+
# # or right brackets are collapsed together in nested arrays.
|
33
|
+
#
|
34
|
+
# # bad
|
35
|
+
# array = [ a, [ b, c ] ]
|
36
|
+
#
|
37
|
+
# # good
|
38
|
+
# array = [ a, [ b, c ]]
|
39
|
+
class SpaceInsideArrayLiteralBrackets < Cop
|
40
|
+
include SurroundingSpace
|
41
|
+
include ConfigurableEnforcedStyle
|
42
|
+
|
43
|
+
MSG = '%<command>s space inside array brackets.'.freeze
|
44
|
+
EMPTY_MSG = '%<command>s space inside empty array brackets.'.freeze
|
45
|
+
|
46
|
+
def on_array(node)
|
47
|
+
return unless node.square_brackets?
|
48
|
+
left, right = array_brackets(node)
|
49
|
+
if empty_brackets?(left, right)
|
50
|
+
return empty_offenses(node, left, right)
|
51
|
+
end
|
52
|
+
|
53
|
+
start_ok = next_to_newline?(node, left)
|
54
|
+
end_ok = node.single_line? ? false : end_has_own_line?(right)
|
55
|
+
|
56
|
+
issue_offenses(node, left, right, start_ok, end_ok)
|
57
|
+
end
|
58
|
+
|
59
|
+
def autocorrect(node)
|
60
|
+
left, right = array_brackets(node)
|
61
|
+
|
62
|
+
lambda do |corrector|
|
63
|
+
if empty_brackets?(left, right)
|
64
|
+
empty_corrections(corrector, left, right)
|
65
|
+
elsif style == :no_space
|
66
|
+
no_space_corrector(corrector, left, right)
|
67
|
+
elsif style == :space
|
68
|
+
space_corrector(corrector, left, right)
|
69
|
+
else
|
70
|
+
compact_corrections(corrector, node, left, right)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
private
|
76
|
+
|
77
|
+
def array_brackets(node)
|
78
|
+
[left_array_bracket(node), right_array_bracket(node)]
|
79
|
+
end
|
80
|
+
|
81
|
+
def left_array_bracket(node)
|
82
|
+
tokens(node).find(&:left_array_bracket?)
|
83
|
+
end
|
84
|
+
|
85
|
+
def right_array_bracket(node)
|
86
|
+
tokens(node).reverse.find(&:right_bracket?)
|
87
|
+
end
|
88
|
+
|
89
|
+
def empty_brackets?(left, right)
|
90
|
+
processed_source.tokens.index(left) ==
|
91
|
+
processed_source.tokens.index(right) - 1
|
92
|
+
end
|
93
|
+
|
94
|
+
def empty_offenses(node, left, right)
|
95
|
+
empty_offense(node, 'Use one') if offending_empty_space?(left, right)
|
96
|
+
return unless offending_empty_no_space?(left, right)
|
97
|
+
empty_offense(node, 'Do not use')
|
98
|
+
end
|
99
|
+
|
100
|
+
def empty_offense(node, command)
|
101
|
+
add_offense(node, message: format(EMPTY_MSG, command: command))
|
102
|
+
end
|
103
|
+
|
104
|
+
def offending_empty_space?(left, right)
|
105
|
+
empty_config == 'space' && !space_between?(left, right)
|
106
|
+
end
|
107
|
+
|
108
|
+
def offending_empty_no_space?(left, right)
|
109
|
+
empty_config == 'no_space' && !no_space_between?(left, right)
|
110
|
+
end
|
111
|
+
|
112
|
+
def space_between?(left, right)
|
113
|
+
left.end_pos + 1 == right.begin_pos
|
114
|
+
end
|
115
|
+
|
116
|
+
def no_space_between?(left, right)
|
117
|
+
left.end_pos == right.begin_pos
|
118
|
+
end
|
119
|
+
|
120
|
+
def empty_config
|
121
|
+
cop_config['EnforcedStyleForEmptyBrackets']
|
122
|
+
end
|
123
|
+
|
124
|
+
def empty_corrections(corrector, left, right)
|
125
|
+
if offending_empty_space?(left, right)
|
126
|
+
range = side_space_range(range: left.pos, side: :right)
|
127
|
+
corrector.remove(range)
|
128
|
+
corrector.insert_after(left.pos, ' ')
|
129
|
+
elsif offending_empty_no_space?(left, right)
|
130
|
+
range = side_space_range(range: left.pos, side: :right)
|
131
|
+
corrector.remove(range)
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
def next_to_newline?(node, token)
|
136
|
+
tokens(node)[index_for(node, token) + 1].line != token.line
|
137
|
+
end
|
138
|
+
|
139
|
+
def end_has_own_line?(token)
|
140
|
+
line, col = line_and_column_for(token)
|
141
|
+
return true if col == -1
|
142
|
+
processed_source.lines[line][0..col].delete(' ').empty?
|
143
|
+
end
|
144
|
+
|
145
|
+
def index_for(node, token)
|
146
|
+
tokens(node).index(token)
|
147
|
+
end
|
148
|
+
|
149
|
+
def line_and_column_for(token)
|
150
|
+
[token.line - 1, token.column - 1]
|
151
|
+
end
|
152
|
+
|
153
|
+
def issue_offenses(node, left, right, start_ok, end_ok)
|
154
|
+
if style == :no_space
|
155
|
+
start_ok = next_to_comment?(node, left)
|
156
|
+
no_space_offenses(node, left, right, MSG, start_ok: start_ok,
|
157
|
+
end_ok: end_ok)
|
158
|
+
elsif style == :space
|
159
|
+
space_offenses(node, left, right, MSG, start_ok: start_ok,
|
160
|
+
end_ok: end_ok)
|
161
|
+
else
|
162
|
+
compact_offenses(node, left, right, start_ok, end_ok)
|
163
|
+
end
|
164
|
+
end
|
165
|
+
|
166
|
+
def next_to_comment?(node, token)
|
167
|
+
tokens(node)[index_for(node, token) + 1].comment?
|
168
|
+
end
|
169
|
+
|
170
|
+
def compact_offenses(node, left, right, start_ok, end_ok)
|
171
|
+
if qualifies_for_compact?(node, left, side: :left)
|
172
|
+
compact_offense(node, left, side: :left)
|
173
|
+
elsif !multi_dimensional_array?(node, left, side: :left)
|
174
|
+
space_offenses(node, left, nil, MSG, start_ok: start_ok,
|
175
|
+
end_ok: true)
|
176
|
+
end
|
177
|
+
if qualifies_for_compact?(node, right)
|
178
|
+
compact_offense(node, right)
|
179
|
+
elsif !multi_dimensional_array?(node, right)
|
180
|
+
space_offenses(node, nil, right, MSG, start_ok: true,
|
181
|
+
end_ok: end_ok)
|
182
|
+
end
|
183
|
+
end
|
184
|
+
|
185
|
+
def qualifies_for_compact?(node, token, side: :right)
|
186
|
+
if side == :right
|
187
|
+
multi_dimensional_array?(node, token) &&
|
188
|
+
!next_to_bracket?(token)
|
189
|
+
else
|
190
|
+
multi_dimensional_array?(node, token, side: :left) &&
|
191
|
+
!next_to_bracket?(token, side: :left)
|
192
|
+
end
|
193
|
+
end
|
194
|
+
|
195
|
+
def multi_dimensional_array?(node, token, side: :right)
|
196
|
+
i = index_for(node, token)
|
197
|
+
if side == :right
|
198
|
+
tokens(node)[i - 1].right_bracket?
|
199
|
+
else
|
200
|
+
tokens(node)[i + 1].left_array_bracket?
|
201
|
+
end
|
202
|
+
end
|
203
|
+
|
204
|
+
def next_to_bracket?(token, side: :right)
|
205
|
+
line_index, col = line_and_column_for(token)
|
206
|
+
line = processed_source.lines[line_index]
|
207
|
+
side == :right ? line[col] == ']' : line[col + 2] == '['
|
208
|
+
end
|
209
|
+
|
210
|
+
def compact_offense(node, token, side: :right)
|
211
|
+
if side == :right
|
212
|
+
space_offense(node, token, :left, MSG, NO_SPACE_COMMAND)
|
213
|
+
else
|
214
|
+
space_offense(node, token, :right, MSG, NO_SPACE_COMMAND)
|
215
|
+
end
|
216
|
+
end
|
217
|
+
|
218
|
+
def compact_corrections(corrector, node, left, right)
|
219
|
+
if qualifies_for_compact?(node, left, side: :left)
|
220
|
+
range = side_space_range(range: left.pos, side: :right)
|
221
|
+
corrector.remove(range)
|
222
|
+
elsif !left.space_after?
|
223
|
+
corrector.insert_after(left.pos, ' ')
|
224
|
+
end
|
225
|
+
if qualifies_for_compact?(node, right)
|
226
|
+
range = side_space_range(range: right.pos, side: :left)
|
227
|
+
corrector.remove(range)
|
228
|
+
elsif !right.space_before?
|
229
|
+
corrector.insert_before(right.pos, ' ')
|
230
|
+
end
|
231
|
+
end
|
232
|
+
end
|
233
|
+
end
|
234
|
+
end
|
235
|
+
end
|
@@ -7,11 +7,11 @@ module RuboCop
|
|
7
7
|
# (i.e. %i/%w).
|
8
8
|
#
|
9
9
|
# @example
|
10
|
-
# @good
|
11
|
-
# %i(foo bar baz)
|
12
10
|
#
|
13
|
-
#
|
11
|
+
# # bad
|
14
12
|
# %w(foo bar baz)
|
13
|
+
# # good
|
14
|
+
# %i(foo bar baz)
|
15
15
|
class SpaceInsideArrayPercentLiteral < Cop
|
16
16
|
include MatchRange
|
17
17
|
include PercentLiteral
|
@@ -7,6 +7,75 @@ module RuboCop
|
|
7
7
|
# them on configuration. For blocks taking parameters, it checks that the
|
8
8
|
# left brace has or doesn't have trailing space depending on
|
9
9
|
# configuration.
|
10
|
+
#
|
11
|
+
# @example EnforcedStyle: space (default)
|
12
|
+
# # The `space` style enforces that block braces have
|
13
|
+
# # surrounding space.
|
14
|
+
#
|
15
|
+
# # bad
|
16
|
+
# some_array.each {puts e}
|
17
|
+
#
|
18
|
+
# # good
|
19
|
+
# some_array.each { puts e }
|
20
|
+
#
|
21
|
+
# @example EnforcedStyle: no_space
|
22
|
+
# # The `no_space` style enforces that block braces don't
|
23
|
+
# # have surrounding space.
|
24
|
+
#
|
25
|
+
# # bad
|
26
|
+
# some_array.each { puts e }
|
27
|
+
#
|
28
|
+
# # good
|
29
|
+
# some_array.each {puts e}
|
30
|
+
#
|
31
|
+
#
|
32
|
+
# @example EnforcedStyleForEmptyBraces: no_space (default)
|
33
|
+
# # The `no_space` EnforcedStyleForEmptyBraces style enforces that
|
34
|
+
# # block braces don't have a space in between when empty.
|
35
|
+
#
|
36
|
+
# # bad
|
37
|
+
# some_array.each { }
|
38
|
+
# some_array.each { }
|
39
|
+
# some_array.each { }
|
40
|
+
#
|
41
|
+
# # good
|
42
|
+
# some_array.each {}
|
43
|
+
#
|
44
|
+
# @example EnforcedStyleForEmptyBraces: space
|
45
|
+
# # The `space` EnforcedStyleForEmptyBraces style enforces that
|
46
|
+
# # block braces have at least a spece in between when empty.
|
47
|
+
#
|
48
|
+
# # bad
|
49
|
+
# some_array.each {}
|
50
|
+
#
|
51
|
+
# # good
|
52
|
+
# some_array.each { }
|
53
|
+
# some_array.each { }
|
54
|
+
# some_array.each { }
|
55
|
+
#
|
56
|
+
#
|
57
|
+
# @example SpaceBeforeBlockParameters: true (default)
|
58
|
+
# # The SpaceBeforeBlockParameters style set to `true` enforces that
|
59
|
+
# # there is a space between `{` and `|`. Overrides `EnforcedStyle`
|
60
|
+
# # if there is a conflict.
|
61
|
+
#
|
62
|
+
# # bad
|
63
|
+
# [1, 2, 3].each {|n| n * 2 }
|
64
|
+
#
|
65
|
+
# # good
|
66
|
+
# [1, 2, 3].each { |n| n * 2 }
|
67
|
+
#
|
68
|
+
# @example SpaceBeforeBlockParameters: true
|
69
|
+
# # The SpaceBeforeBlockParameters style set to `false` enforces that
|
70
|
+
# # there is no space between `{` and `|`. Overrides `EnforcedStyle`
|
71
|
+
# # if there is a conflict.
|
72
|
+
#
|
73
|
+
# # bad
|
74
|
+
# [1, 2, 3].each { |n| n * 2 }
|
75
|
+
#
|
76
|
+
# # good
|
77
|
+
# [1, 2, 3].each {|n| n * 2 }
|
78
|
+
#
|
10
79
|
class SpaceInsideBlockBraces < Cop
|
11
80
|
include ConfigurableEnforcedStyle
|
12
81
|
include SurroundingSpace
|
@@ -20,6 +89,17 @@ module RuboCop
|
|
20
89
|
check_inside(node, left_brace, right_brace)
|
21
90
|
end
|
22
91
|
|
92
|
+
def autocorrect(range)
|
93
|
+
lambda do |corrector|
|
94
|
+
case range.source
|
95
|
+
when /\s/ then corrector.remove(range)
|
96
|
+
when '{}' then corrector.replace(range, '{ }')
|
97
|
+
when '{|' then corrector.replace(range, '{ |')
|
98
|
+
else corrector.insert_before(range, ' ')
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
23
103
|
private
|
24
104
|
|
25
105
|
def check_inside(node, left_brace, right_brace)
|
@@ -49,7 +129,7 @@ module RuboCop
|
|
49
129
|
args_delimiter = node.arguments.loc.begin # Can be ( | or nil.
|
50
130
|
|
51
131
|
check_left_brace(inner, node.loc.begin, args_delimiter)
|
52
|
-
check_right_brace(inner, node.loc.end,
|
132
|
+
check_right_brace(inner, node.loc.end, node.single_line?)
|
53
133
|
end
|
54
134
|
|
55
135
|
def check_left_brace(inner, left_brace, args_delimiter)
|
@@ -60,8 +140,8 @@ module RuboCop
|
|
60
140
|
end
|
61
141
|
end
|
62
142
|
|
63
|
-
def check_right_brace(inner, right_brace,
|
64
|
-
if inner =~ /\S$/
|
143
|
+
def check_right_brace(inner, right_brace, single_line)
|
144
|
+
if single_line && inner =~ /\S$/
|
65
145
|
no_space(right_brace.begin_pos, right_brace.end_pos,
|
66
146
|
'Space missing inside }.')
|
67
147
|
else
|
@@ -96,7 +176,8 @@ module RuboCop
|
|
96
176
|
end
|
97
177
|
end
|
98
178
|
else
|
99
|
-
brace_with_space = range_with_surrounding_space(left_brace,
|
179
|
+
brace_with_space = range_with_surrounding_space(range: left_brace,
|
180
|
+
side: :right)
|
100
181
|
space(brace_with_space.begin_pos + 1, brace_with_space.end_pos,
|
101
182
|
'Space inside { detected.')
|
102
183
|
end
|
@@ -107,7 +188,8 @@ module RuboCop
|
|
107
188
|
end
|
108
189
|
|
109
190
|
def space_inside_right_brace(right_brace)
|
110
|
-
brace_with_space = range_with_surrounding_space(right_brace,
|
191
|
+
brace_with_space = range_with_surrounding_space(range: right_brace,
|
192
|
+
side: :left)
|
111
193
|
space(brace_with_space.begin_pos, brace_with_space.end_pos - 1,
|
112
194
|
'Space inside } detected.')
|
113
195
|
end
|
@@ -140,17 +222,6 @@ module RuboCop
|
|
140
222
|
else raise 'Unknown EnforcedStyleForEmptyBraces selected!'
|
141
223
|
end
|
142
224
|
end
|
143
|
-
|
144
|
-
def autocorrect(range)
|
145
|
-
lambda do |corrector|
|
146
|
-
case range.source
|
147
|
-
when /\s/ then corrector.remove(range)
|
148
|
-
when '{}' then corrector.replace(range, '{ }')
|
149
|
-
when '{|' then corrector.replace(range, '{ |')
|
150
|
-
else corrector.insert_before(range, ' ')
|
151
|
-
end
|
152
|
-
end
|
153
|
-
end
|
154
225
|
end
|
155
226
|
end
|
156
227
|
end
|