class RuboCop::Cop::Style::SpaceBeforeModifierKeyword

Here we check if modifier keywords are preceded by a space.

def autocorrect(node)

def autocorrect(node)
  ->(corrector) { corrector.insert_before(node.loc.keyword, ' ') }
end

def elsif?(node)

def elsif?(node)
  node.loc.keyword.is?('elsif')
end

def modifier?(node)

def modifier?(node)
  node.loc.respond_to?(:end) && node.loc.end.nil? && !elsif?(node)
end

def on_if(node)

def on_if(node)
  return unless modifier?(node)
  kw = node.loc.keyword
  b = kw.begin_pos
  left_of_kw = Parser::Source::Range.new(kw.source_buffer, b - 1, b)
  add_offense(node, left_of_kw) unless left_of_kw.is?(' ')
end