class RuboCop::Cop::Layout::SpaceAroundEqualsInParameterDefault
Checks that the equals signs in parameter default assignments have or don't have surrounding space depending on configuration.
@example EnforcedStyle: space (default)
# bad def some_method(arg1=:default, arg2=nil, arg3=[]) # do something... end # good def some_method(arg1 = :default, arg2 = nil, arg3 = []) # do something... end
@example EnforcedStyle: no_space
# bad def some_method(arg1 = :default, arg2 = nil, arg3 = []) # do something... end # good def some_method(arg1=:default, arg2=nil, arg3=[]) # do something... end
Constants
- MSG
Public Instance Methods
autocorrect(range)
click to toggle source
# File lib/rubocop/cop/layout/space_around_equals_in_parameter_default.rb, line 43 def autocorrect(range) m = range.source.match(/=\s*(\S+)/) rest = m ? m.captures[0] : '' replacement = style == :space ? ' = ' : '=' ->(corrector) { corrector.replace(range, replacement + rest) } end
on_optarg(node)
click to toggle source
# File lib/rubocop/cop/layout/space_around_equals_in_parameter_default.rb, line 37 def on_optarg(node) index = index_of_first_token(node) arg, equals, value = processed_source.tokens[index, 3] check_optarg(arg, equals, value) end
Private Instance Methods
check_optarg(arg, equals, value)
click to toggle source
# File lib/rubocop/cop/layout/space_around_equals_in_parameter_default.rb, line 52 def check_optarg(arg, equals, value) space_on_both_sides = space_on_both_sides?(arg, equals) no_surrounding_space = no_surrounding_space?(arg, equals) if style == :space && space_on_both_sides || style == :no_space && no_surrounding_space correct_style_detected else incorrect_style_detected(arg, value, space_on_both_sides, no_surrounding_space) end end
incorrect_style_detected(arg, value, space_on_both_sides, no_surrounding_space)
click to toggle source
# File lib/rubocop/cop/layout/space_around_equals_in_parameter_default.rb, line 65 def incorrect_style_detected(arg, value, space_on_both_sides, no_surrounding_space) range = range_between(arg.end_pos, value.begin_pos) add_offense(range, location: range) do if style == :space && no_surrounding_space || style == :no_space && space_on_both_sides opposite_style_detected else unrecognized_style_detected end end end
message(_node)
click to toggle source
# File lib/rubocop/cop/layout/space_around_equals_in_parameter_default.rb, line 86 def message(_node) format(MSG, type: style == :space ? 'missing' : 'detected') end
no_surrounding_space?(arg, equals)
click to toggle source
# File lib/rubocop/cop/layout/space_around_equals_in_parameter_default.rb, line 82 def no_surrounding_space?(arg, equals) !arg.space_after? && !equals.space_after? end
space_on_both_sides?(arg, equals)
click to toggle source
# File lib/rubocop/cop/layout/space_around_equals_in_parameter_default.rb, line 78 def space_on_both_sides?(arg, equals) arg.space_after? && equals.space_after? end