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
# bad if condition_a action_a else if condition_b action_b else action_c end end # good if condition_a action_a elsif condition_b action_b else action_c end
@example AllowIfModifier: false (default)
# bad if condition_a action_a else action_b if condition_b end # good if condition_a action_a elsif condition_b action_b end
@example AllowIfModifier: true
# good if condition_a action_a else action_b if condition_b end # good if condition_a action_a elsif condition_b action_b end
Constants
- MSG
Public Instance Methods
on_if(node)
click to toggle source
# File lib/rubocop/cop/style/if_inside_else.rb, line 64 def on_if(node) return if node.ternary? || node.unless? else_branch = node.else_branch return unless else_branch&.if_type? && else_branch&.if? return if allow_if_modifier_in_else_branch?(else_branch) add_offense(else_branch, location: :keyword) end
Private Instance Methods
allow_if_modifier?()
click to toggle source
# File lib/rubocop/cop/style/if_inside_else.rb, line 81 def allow_if_modifier? cop_config['AllowIfModifier'] end
allow_if_modifier_in_else_branch?(else_branch)
click to toggle source
# File lib/rubocop/cop/style/if_inside_else.rb, line 77 def allow_if_modifier_in_else_branch?(else_branch) allow_if_modifier? && else_branch&.modifier_form? end