class RuboCop::Cop::Lint::ElseLayout
end
do_that
do_this
else
…
if something
# good
@example
end
do_that
else do_this
…
if something
# bad
@example
which is usually a mistake.
having an expression on the same line as the else keyword,
This cop checks for odd else block layout - like
def check(node)
def check(node) return unless node.else_branch if node.else? && node.loc.else.is?('else') check_else(node) elsif node.if? check(node.else_branch) end end
def check_else(node)
def check_else(node) else_branch = node.else_branch return unless else_branch.begin_type? first_else = else_branch.children.first return unless first_else.source_range.line == node.loc.else.line add_offense(first_else) end
def on_if(node)
def on_if(node) return if node.ternary? || node.elsif? check(node) end