Sha256: fa0063cce77c0d68ab00f066d3667f9eceae49fb7f173f4947b90bb05794985b

Contents?: true

Size: 744 Bytes

Versions: 4

Compression:

Stored size: 744 Bytes

Contents

# encoding: utf-8

module Rubocop
  module Cop
    class SpaceAfterControlKeyword < Cop
      MSG = 'Use space after control keywords.'
      # elsif and unless are handled by on_if.
      KEYWORDS = %w(if case when while until)

      def on_keyword(node)
        return if node.loc.is_a?(Parser::Source::Map::Ternary)

        exp = node.loc.expression
        kw = node.loc.keyword
        kw_offset = kw.begin_pos - exp.begin_pos
        if exp.source[kw_offset..-1].start_with?(kw.source + '(')
          add_offence(:convention, kw.line, MSG)
        end
      end

      KEYWORDS.each do |keyword|
        define_method(:"on_#{keyword}") do |node|
          on_keyword(node)
          super(node)
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
rubocop-0.8.3 lib/rubocop/cop/space_after_control_keyword.rb
rubocop-0.8.2 lib/rubocop/cop/space_after_control_keyword.rb
rubocop-0.8.1 lib/rubocop/cop/space_after_control_keyword.rb
rubocop-0.8.0 lib/rubocop/cop/space_after_control_keyword.rb