class Rubocop::Cop::Style::MultilineIfThen

Checks for uses of the ‘then` keyword in multi-line if statements.

This is considered bad practice: @example

if cond then end

While if statements can contain ‘then` on the same line: @example

if cond then a elsif cond then b end

Public Instance Methods

error_message() click to toggle source
# File lib/rubocop/cop/style/multiline_if_then.rb, line 41
def error_message
  'Never use then for multi-line if/unless.'
end
offending_line(node) click to toggle source
# File lib/rubocop/cop/style/multiline_if_then.rb, line 23
def offending_line(node)
  condition, body, else_clause = *node
  next_thing = if body && body.loc.expression
                 body.loc.expression.begin
               elsif else_clause && else_clause.loc.expression
                else_clause.loc.expression.begin
               else
                 node.loc.end # No body, use "end".
               end
  right_after_cond =
    Parser::Source::Range.new(next_thing.source_buffer,
                              condition.loc.expression.end.end_pos,
                              next_thing.begin_pos)
  if right_after_cond.source =~ /\A\s*then\s*(#.*)?\s*\n/
    node.loc.expression.begin.line
  end
end