class RuboCop::Cop::Lint::ElseLayout
This cop checks for odd else block layout - like having an expression on the same line as the else keyword, which is usually a mistake.
@example
if something ... else do_this do_that end
Public Instance Methods
on_if(node)
click to toggle source
# File lib/rubocop/cop/lint/else_layout.rb, line 20 def on_if(node) return if ternary?(node) # ignore modifier ops & elsif nodes return unless node.loc.end check(node) end
Private Instance Methods
check(node)
click to toggle source
# File lib/rubocop/cop/lint/else_layout.rb, line 30 def check(node) return unless node return check_else(node) if else?(node) check_if(node) if if?(node) end
check_else(node)
click to toggle source
# File lib/rubocop/cop/lint/else_layout.rb, line 37 def check_else(node) _cond, _if_branch, else_branch = *node return unless else_branch && else_branch.type == :begin first_else_expr = else_branch.children.first return unless first_else_expr.source_range.line == node.loc.else.line add_offense(first_else_expr, :expression, message) end
check_if(node)
click to toggle source
# File lib/rubocop/cop/lint/else_layout.rb, line 47 def check_if(node) _cond, _if_branch, else_branch = *node check(else_branch) end
else?(node)
click to toggle source
# File lib/rubocop/cop/lint/else_layout.rb, line 57 def else?(node) node.loc.respond_to?(:else) && node.loc.else && node.loc.else.is?('else') end
if?(node)
click to toggle source
# File lib/rubocop/cop/lint/else_layout.rb, line 52 def if?(node) node.loc.respond_to?(:keyword) && %w(if elsif).include?(node.loc.keyword.source) end
message()
click to toggle source
# File lib/rubocop/cop/lint/else_layout.rb, line 62 def message 'Odd `else` layout detected. Did you mean to use `elsif`?' end