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 offenses based on how many escaped slashes there are in the regexp and on the value of the configuration parameter MaxSlashes.

Constant Summary

Constants included from Util

Util::ASGN_NODES, Util::EQUALS_ASGN_NODES, Util::OPERATOR_METHODS, Util::PROC_NEW_NODE, Util::SHORTHAND_ASGN_NODES

Class Attribute Summary collapse

Attributes inherited from Cop

#config, #corrections, #offenses, #processed_source

Instance Method Summary collapse

Methods inherited from Cop

#add_offense, all, #autocorrect?, #config_to_allow_offenses, #config_to_allow_offenses=, #cop_config, cop_name, #cop_name, cop_type, #debug?, #display_cop_names?, #exclude_file?, #include_file?, inherited, #initialize, #join_force?, lint?, #message, non_rails, qualified_cop_name, rails?, #relevant_file?, #support_autocorrect?

Methods included from IgnoredNode

#ignore_node, #ignored_node?, #part_of_ignored_node?

Methods included from Util

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

Methods included from PathUtil

match_path?, relative_path

Constructor Details

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

Class Attribute Details

.slash_countObject

Returns the value of attribute slash_count.



11
12
13
# File 'lib/rubocop/cop/style/regexp_literal.rb', line 11

def slash_count
  @slash_count
end

Instance Method Details

#on_regexp(node) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/rubocop/cop/style/regexp_literal.rb', line 14

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('/')
  delimiter_start = node.loc.begin.source[0]

  if delimiter_start == '/'
    if slashes > max_slashes
      add_offense(node, :expression, error_message(''))
    end
  elsif slashes <= max_slashes
    add_offense(node, :expression, error_message('only '))
  end

  configure_max(delimiter_start, slashes) if @options[:auto_gen_config]
end