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