class RuboCop::Cop::Layout::AlignParameters

Here we check if the parameters on a multi-line method call or definition are aligned.

@example

# EnforcedStyle: with_first_parameter

# good

foo :bar,
    :baz

# bad

foo :bar,
  :baz

@example

# EnforcedStyle: with_fixed_indentation

# good

foo :bar,
  :baz

# bad

foo :bar,
    :baz

Constants

ALIGN_PARAMS_MSG
FIXED_INDENT_MSG

Public Instance Methods

on_def(node)
Alias for: on_send
on_defs(node)
Alias for: on_send
on_send(node) click to toggle source
# File lib/rubocop/cop/layout/align_parameters.rb, line 45
def on_send(node)
  return if node.arguments.size < 2 ||
            node.send_type? && node.method?(:[]=)

  check_alignment(node.arguments, base_column(node, node.arguments))
end
Also aliased as: on_def, on_defs

Private Instance Methods

base_column(node, args) click to toggle source
# File lib/rubocop/cop/layout/align_parameters.rb, line 67
def base_column(node, args)
  if fixed_indentation?
    lineno = target_method_lineno(node)
    line = node.source_range.source_buffer.source_line(lineno)
    indentation_of_line = /\S.*/.match(line).begin(0)
    indentation_of_line + configured_indentation_width
  else
    display_column(args.first.source_range)
  end
end
fixed_indentation?() click to toggle source
# File lib/rubocop/cop/layout/align_parameters.rb, line 63
def fixed_indentation?
  cop_config['EnforcedStyle'] == 'with_fixed_indentation'
end
message(node) click to toggle source
# File lib/rubocop/cop/layout/align_parameters.rb, line 56
def message(node)
  type = node && node.parent.send_type? ? 'call' : 'definition'
  msg = fixed_indentation? ? FIXED_INDENT_MSG : ALIGN_PARAMS_MSG

  format(msg, type)
end
target_method_lineno(node) click to toggle source
# File lib/rubocop/cop/layout/align_parameters.rb, line 78
def target_method_lineno(node)
  if node.def_type? || node.defs_type?
    node.loc.keyword.line
  elsif node.loc.selector
    node.loc.selector.line
  else
    # l.(1) has no selector, so we use the opening parenthesis instead
    node.loc.begin.line
  end
end