class RuboCop::Cop::Layout::SpaceBeforeFirstArg


something ‘hello’
something y, z
something x
# good
something’hello’
something y, z
something x
# bad
@example
config parameter is true.
something on a preceding or following line, if the AllowForAlignment
Alternatively, extra spaces can be added to align the argument with
first argument for method calls without parentheses.
Checks that exactly one space is used between a method name and the

def self.autocorrect_incompatible_with

def self.autocorrect_incompatible_with
  [Style::MethodCallWithArgsParentheses]
end

def expect_params_after_method_name?(node)

def expect_params_after_method_name?(node)
  return true if no_space_between_method_name_and_first_argument?(node)
  first_arg = node.first_argument
  same_line?(first_arg, node) &&
    !(allow_for_alignment? && aligned_with_something?(first_arg.source_range))
end

def no_space_between_method_name_and_first_argument?(node)

def no_space_between_method_name_and_first_argument?(node)
  end_pos_of_method_name = node.loc.selector.end_pos
  begin_pos_of_argument = node.first_argument.source_range.begin_pos
  end_pos_of_method_name == begin_pos_of_argument
end

def on_send(node)

def on_send(node)
  return unless regular_method_call_with_arguments?(node)
  return if node.parenthesized?
  first_arg = node.first_argument.source_range
  first_arg_with_space = range_with_surrounding_space(first_arg, side: :left)
  space = range_between(first_arg_with_space.begin_pos, first_arg.begin_pos)
  return if space.length == 1
  return unless expect_params_after_method_name?(node)
  add_offense(space) { |corrector| corrector.replace(space, ' ') }
end

def regular_method_call_with_arguments?(node)

def regular_method_call_with_arguments?(node)
  node.arguments? && !node.operator_method? && !node.setter_method?
end