class RuboCop::Cop::Style::LambdaCall

lambda.(x, y)
# good
lambda.call(x, y)
# bad
@example EnforcedStyle: braces
lambda.call(x, y)
# good
lambda.(x, y)
# bad
@example EnforcedStyle: call (default)
Checks for use of the lambda.(args) syntax.

def explicit_style?

def explicit_style?
  style == :call
end

def implicit_style?

def implicit_style?
  style == :braces
end

def offense?(node)

def offense?(node)
  (explicit_style? && node.implicit_call?) || (implicit_style? && !node.implicit_call?)
end

def on_send(node)

def on_send(node)
  return unless node.receiver
  if offense?(node)
    prefer = prefer(node)
    current = node.source
    add_offense(node, message: format(MSG, prefer: prefer, current: current)) do |corrector|
      next if part_of_ignored_node?(node)
      opposite_style_detected
      corrector.replace(node, prefer)
      ignore_node(node)
    end
  else
    correct_style_detected
  end
end

def prefer(node)

def prefer(node)
  receiver = node.receiver.source
  arguments = node.arguments.map(&:source).join(', ')
  method = explicit_style? ? "call(#{arguments})" : "(#{arguments})"
  "#{receiver}.#{method}"
end