Class: Rubocop::Cop::Style::RegexpLiteral

Inherits:
Cop
  • Object
show all
Defined in:
lib/rubocop/cop/style/regexp_literal.rb

Overview

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.

Constant Summary

Constants inherited from Cop

Cop::OPERATOR_METHODS

Constants included from Util

Util::PROC_NEW_NODE

Instance Attribute Summary

Attributes inherited from Cop

#config, #corrections, #offences, #processed_source

Instance Method Summary collapse

Methods inherited from Cop

#add_offence, all, #autocorrect?, #config_to_allow_offences, #config_to_allow_offences=, #cop_config, cop_name, #cop_name, cop_type, #debug?, #exclude_file?, #exclude_paths, #ignore_node, #include_file?, #include_paths, inherited, #initialize, lint?, #message, non_rails, rails?, #relevant_file?, style?, #support_autocorrect?

Methods included from Util

block_length, command?, comment_line?, const_name, first_part_of_call_chain, lambda?, lambda_or_proc?, line_range, on_node, proc?, range_with_surrounding_space, source_range, strip_quotes

Constructor Details

This class inherits a constructor from Rubocop::Cop::Cop

Instance Method Details

#max_slashesObject



22
23
24
# File 'lib/rubocop/cop/style/regexp_literal.rb', line 22

def max_slashes
  cop_config['MaxSlashes']
end

#on_regexp(node) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
# File 'lib/rubocop/cop/style/regexp_literal.rb', line 10

def on_regexp(node)
  string_parts = node.children.select { |child| child.type == :str }
  total_string = string_parts.map { |s| s.loc.expression.source }.join
  slashes = total_string.count('/')
  msg = if node.loc.begin.is?('/')
          error_message('') if slashes > max_slashes
        else
          error_message('only ') if slashes <= max_slashes
        end
  add_offence(node, :expression, msg) if msg
end