class RuboCop::Cop::Style::NilComparison
end
if x == nil
# good
end
if x.nil?
# bad
@example EnforcedStyle: comparison
end
if x.nil?
# good
end
if x == nil
# bad
@example EnforcedStyle: predicate (default)
Supported styles are: predicate, comparison.
‘nil?`.
Checks for comparison of something with nil using `==` and
def message(_node)
def message(_node) prefer_comparison? ? EXPLICIT_MSG : PREDICATE_MSG end
def on_send(node)
def on_send(node) return unless node.receiver style_check?(node) do add_offense(node.loc.selector) do |corrector| new_code = if prefer_comparison? node.source.sub('.nil?', ' == nil') else node.source.sub(/\s*={2,3}\s*nil/, '.nil?') end corrector.replace(node, new_code) parent = node.parent corrector.wrap(node, '(', ')') if parent.respond_to?(:method?) && parent.method?(:!) end end end
def prefer_comparison?
def prefer_comparison? style == :comparison end
def style_check?(node, &block)
def style_check?(node, &block) if prefer_comparison? nil_check?(node, &block) else nil_comparison?(node, &block) end end