Sha256: 2848e3ea202686c11e5bdaec056ee72135126961f45b9ad90501ea12f57d6987

Contents?: true

Size: 1.13 KB

Versions: 3

Compression:

Stored size: 1.13 KB

Contents

# encoding: utf-8

module Rubocop
  module Cop
    module Style
      # This cop checks for regexp literals and reports offences based
      # on how many escaped slashes there are in the regexp and on the
      # value of the configuration parameter MaxSlashes.
      class RegexpLiteral < Cop
        def on_regexp(node)
          slashes = node.loc.expression.source[1...-1].scan(/\//).size
          max = RegexpLiteral.max_slashes
          msg = if node.loc.begin.is?('/')
                  error_message('') if slashes > max
                else
                  error_message('only ') if slashes <= max
                end
          add_offence(:convention, node.loc.expression, msg) if msg

          super
        end

        def self.max_slashes
          RegexpLiteral.config['MaxSlashes']
        end

        private

        def error_message(word)
          sprintf('Use %%r %sfor regular expressions matching more ' +
                  "than %d '/' character%s.",
                  word,
                  RegexpLiteral.max_slashes,
                  RegexpLiteral.max_slashes == 1 ? '' : 's')
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 2 rubygems

Version Path
rubocop-0.9.1 lib/rubocop/cop/style/regexp_literal.rb
sabat-rubocop-0.9.0 lib/rubocop/cop/style/regexp_literal.rb
rubocop-0.9.0 lib/rubocop/cop/style/regexp_literal.rb