lib/rubocop/cop/rails/blank.rb in rubocop-rails-2.8.1 vs lib/rubocop/cop/rails/blank.rb in rubocop-rails-2.9.0

- old
+ new

@@ -51,15 +51,18 @@ # # # good # def blank? # !present? # end - class Blank < Cop + class Blank < Base + extend AutoCorrector + MSG_NIL_OR_EMPTY = 'Use `%<prefer>s` instead of `%<current>s`.' MSG_NOT_PRESENT = 'Use `%<prefer>s` instead of `%<current>s`.' MSG_UNLESS_PRESENT = 'Use `if %<prefer>s` instead of ' \ '`%<current>s`.' + RESTRICT_ON_SEND = %i[!].freeze # `(send nil $_)` is not actually a valid match for an offense. Nodes # that have a single method call on the left hand side # (`bar || foo.empty?`) will blow up when checking # `(send (:nil) :== $_)`. @@ -91,27 +94,27 @@ not_present?(node) do |receiver| # accepts !present? if its in the body of a `blank?` method next if defining_blank?(node.parent) - add_offense(node, - message: format(MSG_NOT_PRESENT, - prefer: replacement(receiver), - current: node.source)) + message = format(MSG_NOT_PRESENT, prefer: replacement(receiver), current: node.source) + add_offense(node, message: message) do |corrector| + autocorrect(corrector, node) + end end end def on_or(node) return unless cop_config['NilOrEmpty'] nil_or_empty?(node) do |var1, var2| return unless var1 == var2 - add_offense(node, - message: format(MSG_NIL_OR_EMPTY, - prefer: replacement(var1), - current: node.source)) + message = format(MSG_NIL_OR_EMPTY, prefer: replacement(var1), current: node.source) + add_offense(node, message: message) do |corrector| + autocorrect(corrector, node) + end end end def on_if(node) return unless cop_config['UnlessPresent'] @@ -119,34 +122,31 @@ return if node.else? && config.for_cop('Style/UnlessElse')['Enabled'] unless_present?(node) do |method_call, receiver| range = unless_condition(node, method_call) - add_offense(node, - location: range, - message: format(MSG_UNLESS_PRESENT, - prefer: replacement(receiver), - current: range.source)) + message = format(MSG_UNLESS_PRESENT, prefer: replacement(receiver), current: range.source) + add_offense(range, message: message) do |corrector| + autocorrect(corrector, node) + end end end - def autocorrect(node) - lambda do |corrector| - method_call, variable1 = unless_present?(node) + private - if method_call - corrector.replace(node.loc.keyword, 'if') - range = method_call.loc.expression - else - variable1, _variable2 = nil_or_empty?(node) || not_present?(node) - range = node.loc.expression - end + def autocorrect(corrector, node) + method_call, variable1 = unless_present?(node) - corrector.replace(range, replacement(variable1)) + if method_call + corrector.replace(node.loc.keyword, 'if') + range = method_call.loc.expression + else + variable1, _variable2 = nil_or_empty?(node) || not_present?(node) + range = node.loc.expression end - end - private + corrector.replace(range, replacement(variable1)) + end def unless_condition(node, method_call) if node.modifier_form? node.loc.keyword.join(node.loc.expression.end) else