class RuboCop::Cop::Style::LambdaCall
Checks for use of the lambda.(args) syntax.
@example EnforcedStyle: call (default)
# bad lambda.(x, y) # good lambda.call(x, y)
@example EnforcedStyle: braces
# bad lambda.call(x, y) # good lambda.(x, y)
Constants
- MSG
- RESTRICT_ON_SEND
Public Instance Methods
Source
# File lib/rubocop/cop/style/lambda_call.rb, line 28 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
Also aliased as: on_csend
Private Instance Methods
Source
# File lib/rubocop/cop/style/lambda_call.rb, line 73 def explicit_style? style == :call end
Source
# File lib/rubocop/cop/style/lambda_call.rb, line 69 def implicit_style? style == :braces end
Source
# File lib/rubocop/cop/style/lambda_call.rb, line 51 def offense?(node) (explicit_style? && node.implicit_call?) || (implicit_style? && !node.implicit_call?) end
Source
# File lib/rubocop/cop/style/lambda_call.rb, line 55 def prefer(node) receiver = node.receiver.source dot = node.loc.dot.source call_arguments = if node.arguments.empty? '' else arguments = node.arguments.map(&:source).join(', ') "(#{arguments})" end method = explicit_style? ? "call#{call_arguments}" : "(#{arguments})" "#{receiver}#{dot}#{method}" end