Sha256: 51066f223d59c3ad4d6a4012446c83616fe2726f3b10c9ef1796fb850027590d
Contents?: true
Size: 1.28 KB
Versions: 3
Compression:
Stored size: 1.28 KB
Contents
# encoding: utf-8 module Rubocop module Cop module Style # This cop checks for uses of the pre 1.9 lambda syntax for one-line # anonymous functions and uses of the 1.9 lambda syntax for multi-line # anonymous functions. class Lambda < Cop SINGLE_MSG = 'Use the new lambda literal syntax ->(params) {...}.' MULTI_MSG = 'Use the lambda method for multi-line lambdas.' TARGET = s(:send, nil, :lambda) def on_block(node) # We're looking for # (block # (send nil :lambda) # ...) block_method, = *node if block_method == TARGET selector = block_method.loc.selector.source lambda_length = lambda_length(node) if selector != '->' && lambda_length == 0 add_offence(:convention, block_method.loc.expression, SINGLE_MSG) elsif selector == '->' && lambda_length > 0 add_offence(:convention, block_method.loc.expression, MULTI_MSG) end end super end private def lambda_length(block_node) start_line = block_node.loc.begin.line end_line = block_node.loc.end.line end_line - start_line end end end end end
Version data entries
3 entries across 3 versions & 2 rubygems
Version | Path |
---|---|
rubocop-0.9.1 | lib/rubocop/cop/style/lambda.rb |
sabat-rubocop-0.9.0 | lib/rubocop/cop/style/lambda.rb |
rubocop-0.9.0 | lib/rubocop/cop/style/lambda.rb |