class RuboCop::Cop::Style::IfInsideElse

If the `else` branch of a conditional consists solely of an `if` node, it can be combined with the `else` to become an `elsif`. This helps to keep the nesting level from getting too deep.

@example

@good
if condition_a
  action_a
elsif condition_b
  action_b
else
  action_c
end

@bad
if condition_a
  action_a
else
  if condition_b
    action_b
  else
    action_c
  end
end

Constants

MSG

Public Instance Methods

on_if(node) click to toggle source
# File lib/rubocop/cop/style/if_inside_else.rb, line 35
def on_if(node)
  _cond, _if_branch, else_branch = *node
  return unless else_branch
  return unless else_branch.if_type?
  return if ternary?(node) || ternary?(else_branch)
  return unless else_branch.loc.keyword.is?('if')
  return if node.loc.keyword.is?('unless')

  add_offense(else_branch, :keyword, MSG)
end