class RuboCop::Cop::Style::ZeroLengthPredicate
This cop checks for receiver.length == 0 predicates and the negated versions receiver.length > 0 and receiver.length != 0. These can be replaced with receiver.empty? and !receiver.empty? respectively.
@example
@bad [1, 2, 3].length == 0 0 == "foobar".length hash.size > 0 @good [1, 2, 3].empty? "foobar".empty? !hash.empty?
Constants
- NONZERO_MSG
- ZERO_MSG
Public Instance Methods
autocorrect(node)
click to toggle source
# File lib/rubocop/cop/style/zero_length_predicate.rb, line 54 def autocorrect(node) lambda do |corrector| corrector.replace(node.loc.expression, replacement(node)) end end
on_send(node)
click to toggle source
# File lib/rubocop/cop/style/zero_length_predicate.rb, line 26 def on_send(node) zero_length_predicate = zero_length_predicate(node) if zero_length_predicate add_offense(node, :expression, format(ZERO_MSG, *zero_length_predicate)) end nonzero_length_predicate = nonzero_length_predicate(node) if nonzero_length_predicate add_offense(node, :expression, format(NONZERO_MSG, *nonzero_length_predicate)) end end
replacement(node)
click to toggle source
# File lib/rubocop/cop/style/zero_length_predicate.rb, line 60 def replacement(node) receiver = zero_length_receiver(node) return "#{receiver.source}.empty?" if receiver "!#{other_receiver(node).source}.empty?" end