rubocop 0.80.0 → 0.84.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 +4 -4
- data/config/default.yml +171 -34
- data/lib/rubocop.rb +15 -62
- data/lib/rubocop/ast_aliases.rb +8 -0
- data/lib/rubocop/cli.rb +11 -5
- data/lib/rubocop/cli/command/show_cops.rb +2 -6
- data/lib/rubocop/config.rb +41 -13
- data/lib/rubocop/config_loader.rb +40 -36
- data/lib/rubocop/config_loader_resolver.rb +27 -4
- data/lib/rubocop/config_obsoletion.rb +2 -0
- data/lib/rubocop/config_validator.rb +18 -1
- data/lib/rubocop/cop/autocorrect_logic.rb +1 -2
- data/lib/rubocop/cop/badge.rb +5 -5
- data/lib/rubocop/cop/bundler/insecure_protocol_source.rb +1 -1
- data/lib/rubocop/cop/corrector.rb +49 -27
- data/lib/rubocop/cop/correctors/alignment_corrector.rb +4 -8
- data/lib/rubocop/cop/correctors/condition_corrector.rb +1 -2
- data/lib/rubocop/cop/correctors/empty_line_corrector.rb +1 -1
- data/lib/rubocop/cop/correctors/lambda_literal_to_method_corrector.rb +3 -3
- data/lib/rubocop/cop/correctors/line_break_corrector.rb +2 -2
- data/lib/rubocop/cop/correctors/parentheses_corrector.rb +1 -3
- data/lib/rubocop/cop/correctors/percent_literal_corrector.rb +1 -1
- data/lib/rubocop/cop/correctors/space_corrector.rb +1 -3
- data/lib/rubocop/cop/correctors/string_literal_corrector.rb +2 -2
- data/lib/rubocop/cop/gemspec/ordered_dependencies.rb +1 -3
- data/lib/rubocop/cop/generator.rb +4 -3
- data/lib/rubocop/cop/ignored_node.rb +1 -3
- data/lib/rubocop/cop/internal_affairs/offense_location_keyword.rb +1 -1
- data/lib/rubocop/cop/layout/array_alignment.rb +53 -10
- data/lib/rubocop/cop/layout/block_end_newline.rb +5 -3
- data/lib/rubocop/cop/layout/condition_position.rb +12 -2
- data/lib/rubocop/cop/layout/dot_position.rb +1 -1
- data/lib/rubocop/cop/layout/else_alignment.rb +8 -0
- data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +2 -6
- data/lib/rubocop/cop/layout/empty_lines_around_attribute_accessor.rb +126 -0
- data/lib/rubocop/cop/layout/end_of_line.rb +2 -2
- data/lib/rubocop/cop/layout/first_argument_indentation.rb +0 -2
- data/lib/rubocop/cop/layout/first_array_element_indentation.rb +14 -10
- data/lib/rubocop/cop/layout/first_hash_element_indentation.rb +1 -1
- data/lib/rubocop/cop/layout/first_method_argument_line_break.rb +1 -3
- data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +4 -8
- data/lib/rubocop/cop/layout/heredoc_indentation.rb +2 -2
- data/lib/rubocop/cop/layout/{tab.rb → indentation_style.rb} +48 -6
- data/lib/rubocop/cop/layout/indentation_width.rb +1 -3
- data/lib/rubocop/cop/layout/leading_comment_space.rb +1 -1
- data/lib/rubocop/cop/layout/line_length.rb +7 -4
- data/lib/rubocop/cop/layout/multiline_block_layout.rb +2 -4
- data/lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb +1 -3
- data/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +1 -1
- data/lib/rubocop/cop/layout/multiline_operation_indentation.rb +13 -4
- data/lib/rubocop/cop/layout/space_around_block_parameters.rb +3 -3
- data/lib/rubocop/cop/layout/space_around_method_call_operator.rb +129 -0
- data/lib/rubocop/cop/layout/space_around_operators.rb +19 -2
- data/lib/rubocop/cop/layout/space_before_comment.rb +1 -3
- data/lib/rubocop/cop/layout/space_in_lambda_literal.rb +1 -1
- data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +1 -3
- data/lib/rubocop/cop/layout/space_inside_block_braces.rb +2 -2
- data/lib/rubocop/cop/layout/space_inside_range_literal.rb +2 -2
- data/lib/rubocop/cop/layout/space_inside_reference_brackets.rb +2 -6
- data/lib/rubocop/cop/layout/trailing_whitespace.rb +2 -2
- data/lib/rubocop/cop/lint/ambiguous_operator.rb +40 -0
- data/lib/rubocop/cop/lint/ambiguous_regexp_literal.rb +14 -0
- data/lib/rubocop/cop/lint/boolean_symbol.rb +12 -0
- data/lib/rubocop/cop/lint/debugger.rb +1 -1
- data/lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb +133 -0
- data/lib/rubocop/cop/lint/duplicate_methods.rb +1 -5
- data/lib/rubocop/cop/lint/empty_when.rb +29 -6
- data/lib/rubocop/cop/lint/ensure_return.rb +18 -1
- data/lib/rubocop/cop/lint/erb_new_arguments.rb +3 -7
- data/lib/rubocop/cop/lint/implicit_string_concatenation.rb +1 -1
- data/lib/rubocop/cop/lint/inherit_exception.rb +1 -1
- data/lib/rubocop/cop/lint/interpolation_check.rb +1 -1
- data/lib/rubocop/cop/lint/literal_as_condition.rb +10 -13
- data/lib/rubocop/cop/lint/literal_in_interpolation.rb +1 -1
- data/lib/rubocop/cop/lint/loop.rb +6 -4
- data/lib/rubocop/cop/lint/multiple_comparison.rb +1 -1
- data/lib/rubocop/cop/lint/nested_method_definition.rb +2 -2
- data/lib/rubocop/cop/lint/non_deterministic_require_order.rb +2 -2
- data/lib/rubocop/cop/lint/number_conversion.rb +1 -1
- data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +31 -11
- data/lib/rubocop/cop/lint/percent_string_array.rb +2 -4
- data/lib/rubocop/cop/lint/raise_exception.rb +75 -0
- data/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +1 -6
- data/lib/rubocop/cop/lint/redundant_string_coercion.rb +1 -1
- data/lib/rubocop/cop/lint/safe_navigation_chain.rb +1 -1
- data/lib/rubocop/cop/lint/struct_new_override.rb +58 -0
- data/lib/rubocop/cop/lint/suppressed_exception.rb +20 -25
- data/lib/rubocop/cop/lint/syntax.rb +1 -3
- data/lib/rubocop/cop/lint/unified_integer.rb +0 -2
- data/lib/rubocop/cop/lint/unused_method_argument.rb +32 -6
- data/lib/rubocop/cop/lint/uri_regexp.rb +4 -4
- data/lib/rubocop/cop/lint/useless_access_modifier.rb +13 -3
- data/lib/rubocop/cop/lint/useless_assignment.rb +3 -2
- data/lib/rubocop/cop/lint/useless_else_without_rescue.rb +5 -0
- data/lib/rubocop/cop/migration/department_name.rb +21 -12
- data/lib/rubocop/cop/mixin/alignment.rb +1 -3
- data/lib/rubocop/cop/mixin/array_min_size.rb +2 -6
- data/lib/rubocop/cop/mixin/check_line_breakable.rb +4 -12
- data/lib/rubocop/cop/mixin/configurable_enforced_style.rb +1 -3
- data/lib/rubocop/cop/mixin/configurable_formatting.rb +1 -3
- data/lib/rubocop/cop/mixin/end_keyword_alignment.rb +6 -1
- data/lib/rubocop/cop/mixin/frozen_string_literal.rb +10 -1
- data/lib/rubocop/cop/mixin/hash_transform_method.rb +9 -3
- data/lib/rubocop/cop/mixin/line_length_help.rb +2 -1
- data/lib/rubocop/cop/mixin/method_complexity.rb +5 -0
- data/lib/rubocop/cop/mixin/multiline_element_indentation.rb +1 -3
- data/lib/rubocop/cop/mixin/parser_diagnostic.rb +1 -1
- data/lib/rubocop/cop/mixin/statement_modifier.rb +7 -22
- data/lib/rubocop/cop/mixin/surrounding_space.rb +1 -3
- data/lib/rubocop/cop/mixin/target_ruby_version.rb +5 -1
- data/lib/rubocop/cop/mixin/trailing_comma.rb +2 -4
- data/lib/rubocop/cop/naming/class_and_module_camel_case.rb +1 -1
- data/lib/rubocop/cop/naming/constant_name.rb +2 -1
- data/lib/rubocop/cop/naming/file_name.rb +1 -3
- data/lib/rubocop/cop/naming/heredoc_delimiter_naming.rb +1 -1
- data/lib/rubocop/cop/naming/method_name.rb +26 -0
- data/lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +1 -1
- data/lib/rubocop/cop/registry.rb +13 -10
- data/lib/rubocop/cop/severity.rb +1 -3
- data/lib/rubocop/cop/style/access_modifier_declarations.rb +26 -6
- data/lib/rubocop/cop/style/alias.rb +4 -4
- data/lib/rubocop/cop/style/and_or.rb +7 -8
- data/lib/rubocop/cop/style/array_join.rb +1 -1
- data/lib/rubocop/cop/style/attr.rb +1 -3
- data/lib/rubocop/cop/style/block_delimiters.rb +2 -8
- data/lib/rubocop/cop/style/case_equality.rb +24 -1
- data/lib/rubocop/cop/style/character_literal.rb +2 -2
- data/lib/rubocop/cop/style/collection_methods.rb +2 -0
- data/lib/rubocop/cop/style/conditional_assignment.rb +9 -11
- data/lib/rubocop/cop/style/copyright.rb +1 -1
- data/lib/rubocop/cop/style/dir.rb +1 -1
- data/lib/rubocop/cop/style/disable_cops_within_source_code_directive.rb +49 -0
- data/lib/rubocop/cop/style/documentation.rb +43 -5
- data/lib/rubocop/cop/style/double_cop_disable_directive.rb +1 -1
- data/lib/rubocop/cop/style/double_negation.rb +41 -4
- data/lib/rubocop/cop/style/each_for_simple_loop.rb +1 -1
- data/lib/rubocop/cop/style/each_with_object.rb +3 -3
- data/lib/rubocop/cop/style/empty_literal.rb +1 -3
- data/lib/rubocop/cop/style/empty_method.rb +1 -5
- data/lib/rubocop/cop/style/end_block.rb +6 -0
- data/lib/rubocop/cop/style/even_odd.rb +1 -1
- data/lib/rubocop/cop/style/expand_path_arguments.rb +3 -3
- data/lib/rubocop/cop/style/exponential_notation.rb +119 -0
- data/lib/rubocop/cop/style/format_string.rb +2 -2
- data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +2 -4
- data/lib/rubocop/cop/style/guard_clause.rb +25 -2
- data/lib/rubocop/cop/style/hash_each_methods.rb +5 -3
- data/lib/rubocop/cop/style/hash_syntax.rb +15 -10
- data/lib/rubocop/cop/style/hash_transform_keys.rb +6 -2
- data/lib/rubocop/cop/style/hash_transform_values.rb +6 -5
- data/lib/rubocop/cop/style/if_unless_modifier.rb +23 -3
- data/lib/rubocop/cop/style/if_with_semicolon.rb +16 -0
- data/lib/rubocop/cop/style/inverse_methods.rb +9 -5
- data/lib/rubocop/cop/style/lambda.rb +3 -2
- data/lib/rubocop/cop/style/lambda_call.rb +1 -21
- data/lib/rubocop/cop/style/method_call_with_args_parentheses/require_parentheses.rb +1 -3
- data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +1 -3
- data/lib/rubocop/cop/style/mixin_grouping.rb +1 -1
- data/lib/rubocop/cop/style/module_function.rb +58 -12
- data/lib/rubocop/cop/style/multiline_if_modifier.rb +1 -1
- data/lib/rubocop/cop/style/multiline_memoization.rb +1 -1
- data/lib/rubocop/cop/style/multiline_when_then.rb +16 -1
- data/lib/rubocop/cop/style/mutable_constant.rb +2 -4
- data/lib/rubocop/cop/style/nested_parenthesized_calls.rb +4 -4
- data/lib/rubocop/cop/style/next.rb +2 -2
- data/lib/rubocop/cop/style/nil_comparison.rb +1 -1
- data/lib/rubocop/cop/style/non_nil_check.rb +4 -4
- data/lib/rubocop/cop/style/not.rb +1 -1
- data/lib/rubocop/cop/style/numeric_literal_prefix.rb +1 -1
- data/lib/rubocop/cop/style/numeric_literals.rb +1 -1
- data/lib/rubocop/cop/style/numeric_predicate.rb +1 -1
- data/lib/rubocop/cop/style/one_line_conditional.rb +6 -9
- data/lib/rubocop/cop/style/optional_arguments.rb +1 -1
- data/lib/rubocop/cop/style/or_assignment.rb +1 -1
- data/lib/rubocop/cop/style/percent_q_literals.rb +1 -1
- data/lib/rubocop/cop/style/perl_backrefs.rb +2 -2
- data/lib/rubocop/cop/style/proc.rb +1 -1
- data/lib/rubocop/cop/style/raise_args.rb +1 -1
- data/lib/rubocop/cop/style/random_with_offset.rb +3 -3
- data/lib/rubocop/cop/style/redundant_condition.rb +18 -6
- data/lib/rubocop/cop/style/redundant_conditional.rb +1 -1
- data/lib/rubocop/cop/style/redundant_exception.rb +3 -3
- data/lib/rubocop/cop/style/redundant_interpolation.rb +2 -2
- data/lib/rubocop/cop/style/redundant_parentheses.rb +2 -6
- data/lib/rubocop/cop/style/redundant_percent_q.rb +2 -2
- data/lib/rubocop/cop/style/redundant_return.rb +5 -7
- data/lib/rubocop/cop/style/redundant_self.rb +1 -1
- data/lib/rubocop/cop/style/redundant_sort.rb +2 -2
- data/lib/rubocop/cop/style/rescue_modifier.rb +1 -1
- data/lib/rubocop/cop/style/return_nil.rb +1 -1
- data/lib/rubocop/cop/style/safe_navigation.rb +3 -7
- data/lib/rubocop/cop/style/self_assignment.rb +1 -1
- data/lib/rubocop/cop/style/slicing_with_range.rb +39 -0
- data/lib/rubocop/cop/style/special_global_vars.rb +3 -7
- data/lib/rubocop/cop/style/stabby_lambda_parentheses.rb +1 -4
- data/lib/rubocop/cop/style/string_hash_keys.rb +1 -1
- data/lib/rubocop/cop/style/symbol_array.rb +1 -1
- data/lib/rubocop/cop/style/symbol_literal.rb +2 -2
- data/lib/rubocop/cop/style/ternary_parentheses.rb +2 -5
- data/lib/rubocop/cop/style/trailing_comma_in_arguments.rb +35 -0
- data/lib/rubocop/cop/style/trailing_comma_in_array_literal.rb +41 -0
- data/lib/rubocop/cop/style/trailing_comma_in_block_args.rb +88 -0
- data/lib/rubocop/cop/style/trailing_comma_in_hash_literal.rb +44 -0
- data/lib/rubocop/cop/style/trailing_underscore_variable.rb +2 -6
- data/lib/rubocop/cop/style/trivial_accessors.rb +1 -1
- data/lib/rubocop/cop/style/unpack_first.rb +0 -4
- data/lib/rubocop/cop/style/variable_interpolation.rb +1 -1
- data/lib/rubocop/cop/style/while_until_modifier.rb +1 -1
- data/lib/rubocop/cop/style/word_array.rb +1 -1
- data/lib/rubocop/cop/style/zero_length_predicate.rb +1 -1
- data/lib/rubocop/cop/util.rb +24 -0
- data/lib/rubocop/cop/variable_force.rb +3 -9
- data/lib/rubocop/cop/variable_force/assignment.rb +1 -0
- data/lib/rubocop/cop/variable_force/branch.rb +2 -6
- data/lib/rubocop/cop/variable_force/scope.rb +1 -0
- data/lib/rubocop/cop/variable_force/variable.rb +3 -6
- data/lib/rubocop/ext/processed_source.rb +18 -0
- data/lib/rubocop/formatter/base_formatter.rb +0 -4
- data/lib/rubocop/formatter/clang_style_formatter.rb +1 -1
- data/lib/rubocop/formatter/disabled_config_formatter.rb +4 -12
- data/lib/rubocop/formatter/formatter_set.rb +1 -4
- data/lib/rubocop/formatter/junit_formatter.rb +17 -6
- data/lib/rubocop/formatter/pacman_formatter.rb +1 -1
- data/lib/rubocop/formatter/tap_formatter.rb +1 -1
- data/lib/rubocop/name_similarity.rb +12 -9
- data/lib/rubocop/options.rb +20 -13
- data/lib/rubocop/remote_config.rb +1 -3
- data/lib/rubocop/result_cache.rb +1 -3
- data/lib/rubocop/rspec/cop_helper.rb +2 -4
- data/lib/rubocop/rspec/expect_offense.rb +4 -10
- data/lib/rubocop/rspec/shared_contexts.rb +54 -20
- data/lib/rubocop/runner.rb +15 -12
- data/lib/rubocop/target_finder.rb +5 -7
- data/lib/rubocop/target_ruby.rb +2 -2
- data/lib/rubocop/version.rb +5 -3
- metadata +32 -77
- data/lib/rubocop/ast/builder.rb +0 -83
- data/lib/rubocop/ast/node.rb +0 -632
- data/lib/rubocop/ast/node/alias_node.rb +0 -24
- data/lib/rubocop/ast/node/and_node.rb +0 -29
- data/lib/rubocop/ast/node/args_node.rb +0 -29
- data/lib/rubocop/ast/node/array_node.rb +0 -57
- data/lib/rubocop/ast/node/block_node.rb +0 -117
- data/lib/rubocop/ast/node/break_node.rb +0 -17
- data/lib/rubocop/ast/node/case_node.rb +0 -56
- data/lib/rubocop/ast/node/class_node.rb +0 -31
- data/lib/rubocop/ast/node/def_node.rb +0 -82
- data/lib/rubocop/ast/node/defined_node.rb +0 -17
- data/lib/rubocop/ast/node/ensure_node.rb +0 -17
- data/lib/rubocop/ast/node/float_node.rb +0 -12
- data/lib/rubocop/ast/node/for_node.rb +0 -53
- data/lib/rubocop/ast/node/forward_args_node.rb +0 -18
- data/lib/rubocop/ast/node/hash_node.rb +0 -109
- data/lib/rubocop/ast/node/if_node.rb +0 -175
- data/lib/rubocop/ast/node/int_node.rb +0 -12
- data/lib/rubocop/ast/node/keyword_splat_node.rb +0 -45
- data/lib/rubocop/ast/node/mixin/basic_literal_node.rb +0 -16
- data/lib/rubocop/ast/node/mixin/binary_operator_node.rb +0 -43
- data/lib/rubocop/ast/node/mixin/collection_node.rb +0 -15
- data/lib/rubocop/ast/node/mixin/conditional_node.rb +0 -45
- data/lib/rubocop/ast/node/mixin/hash_element_node.rb +0 -125
- data/lib/rubocop/ast/node/mixin/method_dispatch_node.rb +0 -261
- data/lib/rubocop/ast/node/mixin/method_identifier_predicates.rb +0 -114
- data/lib/rubocop/ast/node/mixin/modifier_node.rb +0 -17
- data/lib/rubocop/ast/node/mixin/numeric_node.rb +0 -21
- data/lib/rubocop/ast/node/mixin/parameterized_node.rb +0 -61
- data/lib/rubocop/ast/node/mixin/predicate_operator_node.rb +0 -35
- data/lib/rubocop/ast/node/module_node.rb +0 -24
- data/lib/rubocop/ast/node/or_node.rb +0 -29
- data/lib/rubocop/ast/node/pair_node.rb +0 -63
- data/lib/rubocop/ast/node/range_node.rb +0 -18
- data/lib/rubocop/ast/node/regexp_node.rb +0 -33
- data/lib/rubocop/ast/node/resbody_node.rb +0 -24
- data/lib/rubocop/ast/node/retry_node.rb +0 -17
- data/lib/rubocop/ast/node/return_node.rb +0 -24
- data/lib/rubocop/ast/node/self_class_node.rb +0 -24
- data/lib/rubocop/ast/node/send_node.rb +0 -13
- data/lib/rubocop/ast/node/str_node.rb +0 -16
- data/lib/rubocop/ast/node/super_node.rb +0 -21
- data/lib/rubocop/ast/node/symbol_node.rb +0 -12
- data/lib/rubocop/ast/node/until_node.rb +0 -35
- data/lib/rubocop/ast/node/when_node.rb +0 -53
- data/lib/rubocop/ast/node/while_node.rb +0 -35
- data/lib/rubocop/ast/node/yield_node.rb +0 -21
- data/lib/rubocop/ast/sexp.rb +0 -16
- data/lib/rubocop/ast/traversal.rb +0 -200
- data/lib/rubocop/cop/lint/end_in_method.rb +0 -40
- data/lib/rubocop/formatter/disabled_lines_formatter.rb +0 -57
- data/lib/rubocop/node_pattern.rb +0 -887
- data/lib/rubocop/processed_source.rb +0 -216
- data/lib/rubocop/string_util.rb +0 -14
- data/lib/rubocop/token.rb +0 -114
| @@ -17,10 +17,12 @@ module RuboCop | |
| 17 17 | 
             
                  end
         | 
| 18 18 | 
             
                end
         | 
| 19 19 |  | 
| 20 | 
            +
                # rubocop:disable Metrics/MethodLength
         | 
| 20 21 | 
             
                def resolve_inheritance(path, hash, file, debug)
         | 
| 21 22 | 
             
                  inherited_files = Array(hash['inherit_from'])
         | 
| 22 23 | 
             
                  base_configs(path, inherited_files, file)
         | 
| 23 24 | 
             
                    .reverse.each_with_index do |base_config, index|
         | 
| 25 | 
            +
                    override_department_setting_for_cops(base_config, hash)
         | 
| 24 26 | 
             
                    base_config.each do |k, v|
         | 
| 25 27 | 
             
                      next unless v.is_a?(Hash)
         | 
| 26 28 |  | 
| @@ -34,6 +36,7 @@ module RuboCop | |
| 34 36 | 
             
                    end
         | 
| 35 37 | 
             
                  end
         | 
| 36 38 | 
             
                end
         | 
| 39 | 
            +
                # rubocop:enable Metrics/MethodLength
         | 
| 37 40 |  | 
| 38 41 | 
             
                def resolve_inheritance_from_gems(hash)
         | 
| 39 42 | 
             
                  gems = hash.delete('inherit_gem')
         | 
| @@ -68,9 +71,7 @@ module RuboCop | |
| 68 71 | 
             
                    end
         | 
| 69 72 | 
             
                  end
         | 
| 70 73 |  | 
| 71 | 
            -
                  if disabled_by_default
         | 
| 72 | 
            -
                    config = handle_disabled_by_default(config, default_configuration)
         | 
| 73 | 
            -
                  end
         | 
| 74 | 
            +
                  config = handle_disabled_by_default(config, default_configuration) if disabled_by_default
         | 
| 74 75 |  | 
| 75 76 | 
             
                  opts = { inherit_mode: config['inherit_mode'] || {},
         | 
| 76 77 | 
             
                           unset_nil: unset_nil }
         | 
| @@ -100,8 +101,30 @@ module RuboCop | |
| 100 101 | 
             
                end
         | 
| 101 102 | 
             
                # rubocop:enable Metrics/AbcSize
         | 
| 102 103 |  | 
| 104 | 
            +
                # An `Enabled: true` setting in user configuration for a cop overrides an
         | 
| 105 | 
            +
                # `Enabled: false` setting for its department.
         | 
| 106 | 
            +
                def override_department_setting_for_cops(base_hash, derived_hash)
         | 
| 107 | 
            +
                  derived_hash.each_key do |key|
         | 
| 108 | 
            +
                    next unless key =~ %r{(.*)/.*}
         | 
| 109 | 
            +
             | 
| 110 | 
            +
                    department = Regexp.last_match(1)
         | 
| 111 | 
            +
                    next unless disabled?(derived_hash, department) ||
         | 
| 112 | 
            +
                                disabled?(base_hash, department)
         | 
| 113 | 
            +
             | 
| 114 | 
            +
                    # The `override_department` setting for the `Enabled` parameter is an
         | 
| 115 | 
            +
                    # internal setting that's not documented in the manual. It will cause a
         | 
| 116 | 
            +
                    # cop to be enabled later, when logic surrounding enabled/disabled it
         | 
| 117 | 
            +
                    # run, even though its department is disabled.
         | 
| 118 | 
            +
                    derived_hash[key]['Enabled'] = 'override_department' if derived_hash[key]['Enabled']
         | 
| 119 | 
            +
                  end
         | 
| 120 | 
            +
                end
         | 
| 121 | 
            +
             | 
| 103 122 | 
             
                private
         | 
| 104 123 |  | 
| 124 | 
            +
                def disabled?(hash, department)
         | 
| 125 | 
            +
                  hash[department] && hash[department]['Enabled'] == false
         | 
| 126 | 
            +
                end
         | 
| 127 | 
            +
             | 
| 105 128 | 
             
                def duplicate_setting?(base_hash, derived_hash, key, inherited_file)
         | 
| 106 129 | 
             
                  return false if inherited_file.nil? # Not inheritance resolving merge
         | 
| 107 130 | 
             
                  return false if inherited_file.start_with?('..') # Legitimate override
         | 
| @@ -181,7 +204,7 @@ module RuboCop | |
| 181 204 | 
             
                end
         | 
| 182 205 |  | 
| 183 206 | 
             
                def transform(config)
         | 
| 184 | 
            -
                   | 
| 207 | 
            +
                  config.transform_values { |params| yield(params) }
         | 
| 185 208 | 
             
                end
         | 
| 186 209 |  | 
| 187 210 | 
             
                def gem_config_path(gem_name, relative_config_path)
         | 
| @@ -17,8 +17,10 @@ module RuboCop | |
| 17 17 | 
             
                  'Layout/IndentHash' => 'Layout/FirstHashElementIndentation',
         | 
| 18 18 | 
             
                  'Layout/IndentHeredoc' => 'Layout/HeredocIndentation',
         | 
| 19 19 | 
             
                  'Layout/LeadingBlankLines' => 'Layout/LeadingEmptyLines',
         | 
| 20 | 
            +
                  'Layout/Tab' => 'Layout/IndentationStyle',
         | 
| 20 21 | 
             
                  'Layout/TrailingBlankLines' => 'Layout/TrailingEmptyLines',
         | 
| 21 22 | 
             
                  'Lint/DuplicatedKey' => 'Lint/DuplicateHashKey',
         | 
| 23 | 
            +
                  'Lint/EndInMethod' => 'Style/EndBlock',
         | 
| 22 24 | 
             
                  'Lint/HandleExceptions' => 'Lint/SuppressedException',
         | 
| 23 25 | 
             
                  'Lint/MultipleCompare' => 'Lint/MultipleComparison',
         | 
| 24 26 | 
             
                  'Lint/StringConversionInInterpolation' => 'Lint/RedundantStringCoercion',
         | 
| @@ -13,6 +13,7 @@ module RuboCop | |
| 13 13 | 
             
                INTERNAL_PARAMS = %w[Description StyleGuide
         | 
| 14 14 | 
             
                                     VersionAdded VersionChanged VersionRemoved
         | 
| 15 15 | 
             
                                     Reference Safe SafeAutoCorrect].freeze
         | 
| 16 | 
            +
                NEW_COPS_VALUES = %w[pending disable enable].freeze
         | 
| 16 17 |  | 
| 17 18 | 
             
                def_delegators :@config, :smart_loaded_path, :for_all_cops
         | 
| 18 19 |  | 
| @@ -22,6 +23,7 @@ module RuboCop | |
| 22 23 | 
             
                  @target_ruby = TargetRuby.new(config)
         | 
| 23 24 | 
             
                end
         | 
| 24 25 |  | 
| 26 | 
            +
                # rubocop:disable Metrics/AbcSize
         | 
| 25 27 | 
             
                def validate
         | 
| 26 28 | 
             
                  check_cop_config_value(@config)
         | 
| 27 29 | 
             
                  reject_conflicting_safe_settings
         | 
| @@ -37,11 +39,13 @@ module RuboCop | |
| 37 39 |  | 
| 38 40 | 
             
                  alert_about_unrecognized_cops(invalid_cop_names)
         | 
| 39 41 | 
             
                  check_target_ruby
         | 
| 42 | 
            +
                  validate_new_cops_parameter
         | 
| 40 43 | 
             
                  validate_parameter_names(valid_cop_names)
         | 
| 41 44 | 
             
                  validate_enforced_styles(valid_cop_names)
         | 
| 42 45 | 
             
                  validate_syntax_cop
         | 
| 43 46 | 
             
                  reject_mutually_exclusive_defaults
         | 
| 44 47 | 
             
                end
         | 
| 48 | 
            +
                # rubocop:enable Metrics/AbcSize
         | 
| 45 49 |  | 
| 46 50 | 
             
                def target_ruby_version
         | 
| 47 51 | 
             
                  target_ruby.version
         | 
| @@ -107,6 +111,18 @@ module RuboCop | |
| 107 111 | 
             
                        'It\'s not possible to disable this cop.'
         | 
| 108 112 | 
             
                end
         | 
| 109 113 |  | 
| 114 | 
            +
                def validate_new_cops_parameter
         | 
| 115 | 
            +
                  new_cop_parameter = @config.for_all_cops['NewCops']
         | 
| 116 | 
            +
                  return if new_cop_parameter.nil? ||
         | 
| 117 | 
            +
                            NEW_COPS_VALUES.include?(new_cop_parameter)
         | 
| 118 | 
            +
             | 
| 119 | 
            +
                  message = "invalid #{new_cop_parameter} for `NewCops` found in" \
         | 
| 120 | 
            +
                            "#{smart_loaded_path}\n" \
         | 
| 121 | 
            +
                            "Valid choices are: #{NEW_COPS_VALUES.join(', ')}"
         | 
| 122 | 
            +
             | 
| 123 | 
            +
                  raise ValidationError, message
         | 
| 124 | 
            +
                end
         | 
| 125 | 
            +
             | 
| 110 126 | 
             
                def validate_parameter_names(valid_cop_names)
         | 
| 111 127 | 
             
                  valid_cop_names.each do |name|
         | 
| 112 128 | 
             
                    validate_section_presence(name)
         | 
| @@ -190,7 +206,8 @@ module RuboCop | |
| 190 206 | 
             
                                   SafeAutoCorrect
         | 
| 191 207 | 
             
                                   AutoCorrect].include?(key) && value.is_a?(String)
         | 
| 192 208 |  | 
| 193 | 
            -
                    next if key == 'Enabled' && | 
| 209 | 
            +
                    next if key == 'Enabled' &&
         | 
| 210 | 
            +
                            %w[pending override_department].include?(value)
         | 
| 194 211 |  | 
| 195 212 | 
             
                    raise ValidationError, msg_not_boolean(parent, key, value)
         | 
| 196 213 | 
             
                  end
         | 
| @@ -43,8 +43,7 @@ module RuboCop | |
| 43 43 | 
             
                  def disable_offense(node)
         | 
| 44 44 | 
             
                    range = node.location.expression
         | 
| 45 45 | 
             
                    eol_comment = " # rubocop:todo #{cop_name}"
         | 
| 46 | 
            -
                    needed_line_length = range. | 
| 47 | 
            -
                                         (range.source_line + eol_comment).length
         | 
| 46 | 
            +
                    needed_line_length = (range.source_line + eol_comment).length
         | 
| 48 47 | 
             
                    if needed_line_length <= max_line_length
         | 
| 49 48 | 
             
                      disable_offense_at_end_of_line(range_of_first_line(range),
         | 
| 50 49 | 
             
                                                     eol_comment)
         | 
    
        data/lib/rubocop/cop/badge.rb
    CHANGED
    
    | @@ -4,11 +4,11 @@ module RuboCop | |
| 4 4 | 
             
              module Cop
         | 
| 5 5 | 
             
                # Identifier of all cops containing a department and cop name.
         | 
| 6 6 | 
             
                #
         | 
| 7 | 
            -
                # All cops are identified by their badge. For example, the badge
         | 
| 8 | 
            -
                #  | 
| 9 | 
            -
                # parsed as either `Department/CopName` or just `CopName` to | 
| 10 | 
            -
                # for badge references in source files that omit the department
         | 
| 11 | 
            -
                #  | 
| 7 | 
            +
                # All cops are identified by their badge. For example, the badge for
         | 
| 8 | 
            +
                # `RuboCop::Cop::Layout::IndentationStyle` is `Layout/IndentationStyle`.
         | 
| 9 | 
            +
                # Badges can be parsed as either `Department/CopName` or just `CopName` to
         | 
| 10 | 
            +
                # allow for badge references in source files that omit the department for
         | 
| 11 | 
            +
                # RuboCop to infer.
         | 
| 12 12 | 
             
                class Badge
         | 
| 13 13 | 
             
                  # Error raised when a badge parse fails.
         | 
| 14 14 | 
             
                  class InvalidBadge < Error
         | 
| @@ -72,50 +72,58 @@ module RuboCop | |
| 72 72 |  | 
| 73 73 | 
             
                  # Removes the source range.
         | 
| 74 74 | 
             
                  #
         | 
| 75 | 
            -
                  # @param [Parser::Source::Range] range
         | 
| 76 | 
            -
                  def remove( | 
| 77 | 
            -
                     | 
| 75 | 
            +
                  # @param [Parser::Source::Range, Rubocop::AST::Node] range or node
         | 
| 76 | 
            +
                  def remove(node_or_range)
         | 
| 77 | 
            +
                    range = to_range(node_or_range)
         | 
| 78 78 | 
             
                    @source_rewriter.remove(range)
         | 
| 79 79 | 
             
                  end
         | 
| 80 80 |  | 
| 81 81 | 
             
                  # Inserts new code before the given source range.
         | 
| 82 82 | 
             
                  #
         | 
| 83 | 
            -
                  # @param [Parser::Source::Range] range
         | 
| 83 | 
            +
                  # @param [Parser::Source::Range, Rubocop::AST::Node] range or node
         | 
| 84 84 | 
             
                  # @param [String] content
         | 
| 85 | 
            -
                  def insert_before( | 
| 86 | 
            -
                     | 
| 85 | 
            +
                  def insert_before(node_or_range, content)
         | 
| 86 | 
            +
                    range = to_range(node_or_range)
         | 
| 87 87 | 
             
                    # TODO: Fix Cops using bad ranges instead
         | 
| 88 | 
            -
                    if range.end_pos > @source_buffer.source.size
         | 
| 89 | 
            -
                      range = range.with(end_pos: @source_buffer.source.size)
         | 
| 90 | 
            -
                    end
         | 
| 88 | 
            +
                    range = range.with(end_pos: @source_buffer.source.size) if range.end_pos > @source_buffer.source.size
         | 
| 91 89 |  | 
| 92 90 | 
             
                    @source_rewriter.insert_before(range, content)
         | 
| 93 91 | 
             
                  end
         | 
| 94 92 |  | 
| 95 93 | 
             
                  # Inserts new code after the given source range.
         | 
| 96 94 | 
             
                  #
         | 
| 97 | 
            -
                  # @param [Parser::Source::Range] range
         | 
| 95 | 
            +
                  # @param [Parser::Source::Range, Rubocop::AST::Node] range or node
         | 
| 98 96 | 
             
                  # @param [String] content
         | 
| 99 | 
            -
                  def insert_after( | 
| 100 | 
            -
                     | 
| 97 | 
            +
                  def insert_after(node_or_range, content)
         | 
| 98 | 
            +
                    range = to_range(node_or_range)
         | 
| 101 99 | 
             
                    @source_rewriter.insert_after(range, content)
         | 
| 102 100 | 
             
                  end
         | 
| 103 101 |  | 
| 102 | 
            +
                  # Wraps the given source range with the given before and after texts
         | 
| 103 | 
            +
                  #
         | 
| 104 | 
            +
                  # @param [Parser::Source::Range, Rubocop::AST::Node] range or node
         | 
| 105 | 
            +
                  # @param [String] before
         | 
| 106 | 
            +
                  # @param [String] after
         | 
| 107 | 
            +
                  def wrap(node_or_range, before, after)
         | 
| 108 | 
            +
                    range = to_range(node_or_range)
         | 
| 109 | 
            +
                    @source_rewriter.wrap(range, before, after)
         | 
| 110 | 
            +
                  end
         | 
| 111 | 
            +
             | 
| 104 112 | 
             
                  # Replaces the code of the source range `range` with `content`.
         | 
| 105 113 | 
             
                  #
         | 
| 106 | 
            -
                  # @param [Parser::Source::Range] range
         | 
| 114 | 
            +
                  # @param [Parser::Source::Range, Rubocop::AST::Node] range or node
         | 
| 107 115 | 
             
                  # @param [String] content
         | 
| 108 | 
            -
                  def replace( | 
| 109 | 
            -
                     | 
| 116 | 
            +
                  def replace(node_or_range, content)
         | 
| 117 | 
            +
                    range = to_range(node_or_range)
         | 
| 110 118 | 
             
                    @source_rewriter.replace(range, content)
         | 
| 111 119 | 
             
                  end
         | 
| 112 120 |  | 
| 113 121 | 
             
                  # Removes `size` characters prior to the source range.
         | 
| 114 122 | 
             
                  #
         | 
| 115 | 
            -
                  # @param [Parser::Source::Range] range
         | 
| 123 | 
            +
                  # @param [Parser::Source::Range, Rubocop::AST::Node] range or node
         | 
| 116 124 | 
             
                  # @param [Integer] size
         | 
| 117 | 
            -
                  def remove_preceding( | 
| 118 | 
            -
                     | 
| 125 | 
            +
                  def remove_preceding(node_or_range, size)
         | 
| 126 | 
            +
                    range = to_range(node_or_range)
         | 
| 119 127 | 
             
                    to_remove = Parser::Source::Range.new(range.source_buffer,
         | 
| 120 128 | 
             
                                                          range.begin_pos - size,
         | 
| 121 129 | 
             
                                                          range.begin_pos)
         | 
| @@ -126,10 +134,10 @@ module RuboCop | |
| 126 134 | 
             
                  # If `size` is greater than the size of `range`, the removed region can
         | 
| 127 135 | 
             
                  # overrun the end of `range`.
         | 
| 128 136 | 
             
                  #
         | 
| 129 | 
            -
                  # @param [Parser::Source::Range] range
         | 
| 137 | 
            +
                  # @param [Parser::Source::Range, Rubocop::AST::Node] range or node
         | 
| 130 138 | 
             
                  # @param [Integer] size
         | 
| 131 | 
            -
                  def remove_leading( | 
| 132 | 
            -
                     | 
| 139 | 
            +
                  def remove_leading(node_or_range, size)
         | 
| 140 | 
            +
                    range = to_range(node_or_range)
         | 
| 133 141 | 
             
                    to_remove = Parser::Source::Range.new(range.source_buffer,
         | 
| 134 142 | 
             
                                                          range.begin_pos,
         | 
| 135 143 | 
             
                                                          range.begin_pos + size)
         | 
| @@ -140,10 +148,10 @@ module RuboCop | |
| 140 148 | 
             
                  # If `size` is greater than the size of `range`, the removed region can
         | 
| 141 149 | 
             
                  # overrun the beginning of `range`.
         | 
| 142 150 | 
             
                  #
         | 
| 143 | 
            -
                  # @param [Parser::Source::Range] range
         | 
| 151 | 
            +
                  # @param [Parser::Source::Range, Rubocop::AST::Node] range or node
         | 
| 144 152 | 
             
                  # @param [Integer] size
         | 
| 145 | 
            -
                  def remove_trailing( | 
| 146 | 
            -
                     | 
| 153 | 
            +
                  def remove_trailing(node_or_range, size)
         | 
| 154 | 
            +
                    range = to_range(node_or_range)
         | 
| 147 155 | 
             
                    to_remove = Parser::Source::Range.new(range.source_buffer,
         | 
| 148 156 | 
             
                                                          range.end_pos - size,
         | 
| 149 157 | 
             
                                                          range.end_pos)
         | 
| @@ -153,11 +161,25 @@ module RuboCop | |
| 153 161 | 
             
                  private
         | 
| 154 162 |  | 
| 155 163 | 
             
                  # :nodoc:
         | 
| 156 | 
            -
                  def  | 
| 157 | 
            -
                     | 
| 164 | 
            +
                  def to_range(node_or_range)
         | 
| 165 | 
            +
                    range = case node_or_range
         | 
| 166 | 
            +
                            when ::RuboCop::AST::Node, ::Parser::Source::Comment
         | 
| 167 | 
            +
                              node_or_range.loc.expression
         | 
| 168 | 
            +
                            when ::Parser::Source::Range
         | 
| 169 | 
            +
                              node_or_range
         | 
| 170 | 
            +
                            else
         | 
| 171 | 
            +
                              raise TypeError,
         | 
| 172 | 
            +
                                    'Expected a Parser::Source::Range, Comment or ' \
         | 
| 173 | 
            +
                                    "Rubocop::AST::Node, got #{node_or_range.class}"
         | 
| 174 | 
            +
                            end
         | 
| 175 | 
            +
                    validate_buffer(range.source_buffer)
         | 
| 176 | 
            +
                    range
         | 
| 177 | 
            +
                  end
         | 
| 178 | 
            +
             | 
| 179 | 
            +
                  def validate_buffer(buffer)
         | 
| 158 180 | 
             
                    return if buffer == @source_buffer
         | 
| 159 181 |  | 
| 160 | 
            -
                    unless buffer.is_a?(Parser::Source::Buffer)
         | 
| 182 | 
            +
                    unless buffer.is_a?(::Parser::Source::Buffer)
         | 
| 161 183 | 
             
                      # actually this should be enforced by parser gem
         | 
| 162 184 | 
             
                      raise 'Corrector expected range source buffer to be a ' \
         | 
| 163 185 | 
             
                            "Parser::Source::Buffer, but got #{buffer.class}"
         | 
| @@ -48,10 +48,8 @@ module RuboCop | |
| 48 48 | 
             
                      return if taboo_ranges.any? { |t| within?(range, t) }
         | 
| 49 49 |  | 
| 50 50 | 
             
                      if column_delta.positive?
         | 
| 51 | 
            -
                        unless range.resize(1).source == "\n"
         | 
| 52 | 
            -
             | 
| 53 | 
            -
                        end
         | 
| 54 | 
            -
                      elsif range.source =~ /\A[ \t]+\z/
         | 
| 51 | 
            +
                        corrector.insert_before(range, ' ' * column_delta) unless range.resize(1).source == "\n"
         | 
| 52 | 
            +
                      elsif /\A[ \t]+\z/.match?(range.source)
         | 
| 55 53 | 
             
                        remove(range, corrector)
         | 
| 56 54 | 
             
                      end
         | 
| 57 55 | 
             
                    end
         | 
| @@ -92,9 +90,7 @@ module RuboCop | |
| 92 90 | 
             
                    end
         | 
| 93 91 |  | 
| 94 92 | 
             
                    def calculate_range(expr, line_begin_pos, column_delta)
         | 
| 95 | 
            -
                      if column_delta.positive?
         | 
| 96 | 
            -
                        return range_between(line_begin_pos, line_begin_pos)
         | 
| 97 | 
            -
                      end
         | 
| 93 | 
            +
                      return range_between(line_begin_pos, line_begin_pos) if column_delta.positive?
         | 
| 98 94 |  | 
| 99 95 | 
             
                      starts_with_space =
         | 
| 100 96 | 
             
                        expr.source_buffer.source[line_begin_pos].start_with?(' ')
         | 
| @@ -112,7 +108,7 @@ module RuboCop | |
| 112 108 | 
             
                      corrector.remove(range)
         | 
| 113 109 | 
             
                    rescue RuntimeError
         | 
| 114 110 | 
             
                      range = range_between(range.begin_pos + 1, range.end_pos + 1)
         | 
| 115 | 
            -
                      retry if range.source | 
| 111 | 
            +
                      retry if /^ +$/.match?(range.source)
         | 
| 116 112 | 
             
                    ensure
         | 
| 117 113 | 
             
                      $stderr = original_stderr
         | 
| 118 114 | 
             
                    end
         | 
| @@ -10,8 +10,7 @@ module RuboCop | |
| 10 10 |  | 
| 11 11 | 
             
                      lambda do |corrector|
         | 
| 12 12 | 
             
                        corrector.replace(node.loc.keyword, node.inverse_keyword)
         | 
| 13 | 
            -
                        corrector.replace(condition. | 
| 14 | 
            -
                                          condition.children.first.source)
         | 
| 13 | 
            +
                        corrector.replace(condition, condition.children.first.source)
         | 
| 15 14 | 
             
                      end
         | 
| 16 15 | 
             
                    end
         | 
| 17 16 |  | 
| @@ -44,13 +44,13 @@ module RuboCop | |
| 44 44 | 
             
                  end
         | 
| 45 45 |  | 
| 46 46 | 
             
                  def replace_selector(corrector)
         | 
| 47 | 
            -
                    corrector.replace(method | 
| 47 | 
            +
                    corrector.replace(method, 'lambda')
         | 
| 48 48 | 
             
                  end
         | 
| 49 49 |  | 
| 50 50 | 
             
                  def remove_arguments(corrector)
         | 
| 51 51 | 
             
                    return if arguments.empty_and_without_delimiters?
         | 
| 52 52 |  | 
| 53 | 
            -
                    corrector.remove(arguments | 
| 53 | 
            +
                    corrector.remove(arguments)
         | 
| 54 54 | 
             
                  end
         | 
| 55 55 |  | 
| 56 56 | 
             
                  def insert_arguments(corrector)
         | 
| @@ -62,7 +62,7 @@ module RuboCop | |
| 62 62 |  | 
| 63 63 | 
             
                  def remove_leading_whitespace(corrector)
         | 
| 64 64 | 
             
                    corrector.remove_preceding(
         | 
| 65 | 
            -
                      arguments | 
| 65 | 
            +
                      arguments,
         | 
| 66 66 | 
             
                      arguments.source_range.begin_pos -
         | 
| 67 67 | 
             
                        block_node.send_node.source_range.end_pos
         | 
| 68 68 | 
             
                    )
         | 
| @@ -38,9 +38,9 @@ module RuboCop | |
| 38 38 | 
             
                      return unless eol_comment
         | 
| 39 39 |  | 
| 40 40 | 
             
                      text = eol_comment.loc.expression.source
         | 
| 41 | 
            -
                      corrector.insert_before(node | 
| 41 | 
            +
                      corrector.insert_before(node,
         | 
| 42 42 | 
             
                                              text + "\n" + (' ' * node.loc.keyword.column))
         | 
| 43 | 
            -
                      corrector.remove(eol_comment | 
| 43 | 
            +
                      corrector.remove(eol_comment)
         | 
| 44 44 | 
             
                    end
         | 
| 45 45 |  | 
| 46 46 | 
             
                    private
         | 
| @@ -10,9 +10,7 @@ module RuboCop | |
| 10 10 | 
             
                        corrector.remove(node.loc.begin)
         | 
| 11 11 | 
             
                        corrector.remove(node.loc.end)
         | 
| 12 12 |  | 
| 13 | 
            -
                        if ternary_condition?(node) && next_char_is_question_mark?(node)
         | 
| 14 | 
            -
                          corrector.insert_after(node.loc.end, ' ')
         | 
| 15 | 
            -
                        end
         | 
| 13 | 
            +
                        corrector.insert_after(node.loc.end, ' ') if ternary_condition?(node) && next_char_is_question_mark?(node)
         | 
| 16 14 | 
             
                      end
         | 
| 17 15 | 
             
                    end
         | 
| 18 16 |  | 
| @@ -35,9 +35,7 @@ module RuboCop | |
| 35 35 |  | 
| 36 36 | 
             
                    def add_space(processed_source, corrector, left_token, right_token)
         | 
| 37 37 | 
             
                      @processed_source = processed_source
         | 
| 38 | 
            -
                      unless left_token.space_after?
         | 
| 39 | 
            -
                        corrector.insert_after(left_token.pos, ' ')
         | 
| 40 | 
            -
                      end
         | 
| 38 | 
            +
                      corrector.insert_after(left_token.pos, ' ') unless left_token.space_after?
         | 
| 41 39 | 
             
                      return if right_token.space_before?
         | 
| 42 40 |  | 
| 43 41 | 
             
                      corrector.insert_before(right_token.pos, ' ')
         | 
| @@ -13,9 +13,9 @@ module RuboCop | |
| 13 13 | 
             
                      lambda do |corrector|
         | 
| 14 14 | 
             
                        str = node.str_content
         | 
| 15 15 | 
             
                        if style == :single_quotes
         | 
| 16 | 
            -
                          corrector.replace(node | 
| 16 | 
            +
                          corrector.replace(node, to_string_literal(str))
         | 
| 17 17 | 
             
                        else
         | 
| 18 | 
            -
                          corrector.replace(node | 
| 18 | 
            +
                          corrector.replace(node, str.inspect)
         | 
| 19 19 | 
             
                        end
         | 
| 20 20 | 
             
                      end
         | 
| 21 21 | 
             
                    end
         |