class RuboCop::Cop::Layout::ArgumentAlignment

key: value
:baz,
foo :bar,
# bad
key: value
:baz,
foo :bar,
# good
@example EnforcedStyle: with_fixed_indentation
)
key: value
:baz,
:bar,
foo(
key: value
:baz,
foo :bar,
# bad
)
key: value
:baz,
:bar,
foo(
key: value
:baz,
foo :bar,
# good
@example EnforcedStyle: with_first_argument (default)
definition are aligned.
Here we check if the arguments on a multi-line method

def autocorrect(corrector, node)

def autocorrect(corrector, node)
  AlignmentCorrector.correct(corrector, processed_source, node, column_delta)
end

def base_column(node, first_argument)

def base_column(node, first_argument)
  if fixed_indentation? || first_argument.nil?
    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(first_argument.source_range)
  end
end

def fixed_indentation?

def fixed_indentation?
  cop_config['EnforcedStyle'] == 'with_fixed_indentation'
end

def message(_node)

def message(_node)
  fixed_indentation? ? FIXED_INDENT_MSG : ALIGN_PARAMS_MSG
end

def multiple_arguments?(node, first_argument)

def multiple_arguments?(node, first_argument)
  return true if node.arguments.size >= 2
  first_argument&.hash_type? && first_argument.pairs.count >= 2
end

def on_send(node)

def on_send(node)
  first_arg = node.first_argument
  return if !multiple_arguments?(node, first_arg) || (node.send_type? && node.method?(:[]=))
  if first_arg.hash_type? && !first_arg.braces?
    pairs = first_arg.pairs
    check_alignment(pairs, base_column(node, pairs.first))
  else
    check_alignment(node.arguments, base_column(node, first_arg))
  end
end

def target_method_lineno(node)

def target_method_lineno(node)
  if 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