class RuboCop::Cop::Style::UnlessElse

This cop looks for unless expressions with else clauses.

Constants

MSG

Public Instance Methods

autocorrect(node) click to toggle source
# File lib/rubocop/cop/style/unless_else.rb, line 17
def autocorrect(node)
  condition, = *node
  body_range = range_between_condition_and_else(node, condition)
  else_range = range_between_else_and_end(node)

  lambda do |corrector|
    corrector.replace(node.loc.keyword, 'if'.freeze)
    corrector.replace(body_range, else_range.source)
    corrector.replace(else_range, body_range.source)
  end
end
on_if(node) click to toggle source
# File lib/rubocop/cop/style/unless_else.rb, line 11
def on_if(node)
  return unless node.unless? && node.else?

  add_offense(node)
end
range_between_condition_and_else(node, condition) click to toggle source
# File lib/rubocop/cop/style/unless_else.rb, line 29
def range_between_condition_and_else(node, condition)
  range_between(condition.source_range.end_pos, node.loc.else.begin_pos)
end
range_between_else_and_end(node) click to toggle source
# File lib/rubocop/cop/style/unless_else.rb, line 33
def range_between_else_and_end(node)
  range_between(node.loc.else.end_pos, node.loc.end.begin_pos)
end