Module: RuboCop::Cop::ConfigurableNumbering
- Includes:
- ConfigurableEnforcedStyle
- Included in:
- Style::VariableNumber
- Defined in:
- lib/rubocop/cop/mixin/configurable_numbering.rb
Overview
This module provides functionality for checking if numbering match the configured EnforcedStyle.
Constant Summary collapse
- SNAKE_CASE =
/(?:[a-z_]|_\d+)$/
- NORMAL_CASE =
/(?:_\D*|[A-Za-z]\d*)$/
- NON_INTEGER =
/[A-Za-z_]$/
Instance Method Summary collapse
- #check_name(node, name, name_range) ⇒ Object
-
#class_emitter_method?(node, name) ⇒ Boolean
A class emitter method is a singleton method in a class/module, where the method has the same name as a class defined in the class/module.
- #valid_name?(node, name, given_style) ⇒ Boolean
Methods included from ConfigurableEnforcedStyle
#alternative_style, #ambiguous_style_detected, #correct_style_detected, #detected_style, #detected_style=, #no_acceptable_style!, #no_acceptable_style?, #opposite_style_detected, #parameter_name, #style, #style_detected, #supported_styles, #unexpected_style_detected
Instance Method Details
#check_name(node, name, name_range) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/rubocop/cop/mixin/configurable_numbering.rb', line 14 def check_name(node, name, name_range) return if operator?(name) if valid_name?(node, name, style) correct_style_detected else add_offense(node, name_range, (style)) do (supported_styles - [style]).each do |other_style| if valid_name?(node, name, other_style) unexpected_style_detected(other_style) break end end end end end |
#class_emitter_method?(node, name) ⇒ Boolean
A class emitter method is a singleton method in a class/module, where the method has the same name as a class defined in the class/module.
46 47 48 49 50 51 52 53 54 55 |
# File 'lib/rubocop/cop/mixin/configurable_numbering.rb', line 46 def class_emitter_method?(node, name) return false unless node.parent && node.defs_type? # a class emitter method may be defined inside `def self.included`, # `def self.extended`, etc. node = node.parent while node.parent.defs_type? node.parent.each_child_node(:class).any? do |c| c.loc.name.is?(name.to_s) end end |
#valid_name?(node, name, given_style) ⇒ Boolean
31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/rubocop/cop/mixin/configurable_numbering.rb', line 31 def valid_name?(node, name, given_style) pattern = case given_style when :snake_case SNAKE_CASE when :normalcase NORMAL_CASE when :non_integer NON_INTEGER end name.match(pattern) || class_emitter_method?(node, name) end |