Class: Rubocop::Cop::Style::AlignParameters
- Defined in:
- lib/rubocop/cop/style/align_parameters.rb
Overview
Here we check if the parameters on a multi-line method call are aligned.
Constant Summary collapse
- MSG =
'Align the parameters of a method call if they span ' + 'more than one line.'
Constants inherited from Cop
Instance Attribute Summary
Attributes inherited from Cop
#config, #corrections, #offences, #processed_source
Instance Method Summary collapse
Methods inherited from Cop
#add_offence, all, #autocorrect?, #convention, #cop_config, cop_name, #cop_name, cop_type, #debug?, #ignore_node, inherited, #initialize, lint?, #message, rails?, style?, #warning
Constructor Details
This class inherits a constructor from Rubocop::Cop::Cop
Instance Method Details
#autocorrect_action(node) ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/rubocop/cop/style/align_parameters.rb', line 31 def autocorrect_action(node) # We can't use the instance variable inside the lambda. That would # just give each lambda the same reference and they would all get # the last value of @column_delta. A local variable fixes the # problem. column_delta = @column_delta @corrections << lambda do |corrector| expr = node.loc.expression if column_delta > 0 corrector.replace(expr, ' ' * column_delta + expr.source) else range = Parser::Source::Range.new(expr.source_buffer, expr.begin_pos + column_delta, expr.end_pos) corrector.replace(range, expr.source) end end end |
#on_send(node) ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/rubocop/cop/style/align_parameters.rb', line 12 def on_send(node) _receiver, method, *args = *node return if method == :[]= return if args.size <= 1 first_arg_column = args.first.loc.expression.column args.each_cons(2) do |prev, current| current_pos = current.loc.expression if current_pos.line > prev.loc.expression.line && current_pos.column != first_arg_column @column_delta = first_arg_column - current_pos.column convention(current, current_pos) end end end |