module RuboCop::Cop::ConfigurableEnforcedStyle

Handles ‘EnforcedStyle` configuration parameters.

Constants

SYMBOL_TO_STRING_CACHE

Public Instance Methods

alternative_style() click to toggle source
# File lib/rubocop/cop/mixin/configurable_enforced_style.rb, line 88
def alternative_style
  if supported_styles.size != 2
    raise 'alternative_style can only be used when there are exactly 2 SupportedStyles'
  end

  alternative_styles.first
end
alternative_styles() click to toggle source
# File lib/rubocop/cop/mixin/configurable_enforced_style.rb, line 96
def alternative_styles
  (supported_styles - [style])
end
ambiguous_style_detected(*possibilities) click to toggle source
# File lib/rubocop/cop/mixin/configurable_enforced_style.rb, line 19
def ambiguous_style_detected(*possibilities)
  style_detected(possibilities)
end
conflicting_styles_detected()
correct_style_detected() click to toggle source
# File lib/rubocop/cop/mixin/configurable_enforced_style.rb, line 11
def correct_style_detected
  style_detected(style)
end
detected_style() click to toggle source
# File lib/rubocop/cop/mixin/configurable_enforced_style.rb, line 64
def detected_style
  Formatter::DisabledConfigFormatter.detected_styles[cop_name] ||= nil
end
detected_style=(style) click to toggle source
# File lib/rubocop/cop/mixin/configurable_enforced_style.rb, line 68
def detected_style=(style)
  Formatter::DisabledConfigFormatter.detected_styles[cop_name] = style
end
no_acceptable_style!() click to toggle source
# File lib/rubocop/cop/mixin/configurable_enforced_style.rb, line 60
def no_acceptable_style!
  self.config_to_allow_offenses = { 'Enabled' => false }
end
no_acceptable_style?() click to toggle source

rubocop:enable Metrics

# File lib/rubocop/cop/mixin/configurable_enforced_style.rb, line 56
def no_acceptable_style?
  config_to_allow_offenses['Enabled'] == false
end
opposite_style_detected() click to toggle source
# File lib/rubocop/cop/mixin/configurable_enforced_style.rb, line 7
def opposite_style_detected
  style_detected(alternative_style)
end
style() click to toggle source
# File lib/rubocop/cop/mixin/configurable_enforced_style.rb, line 79
def style
  @style ||= begin
    s = cop_config[style_parameter_name].to_sym
    raise "Unknown style #{s} selected!" unless supported_styles.include?(s)

    s
  end
end
style_configured?() click to toggle source
# File lib/rubocop/cop/mixin/configurable_enforced_style.rb, line 75
def style_configured?
  cop_config.key?(style_parameter_name)
end
style_detected(detected) click to toggle source

rubocop:disable Metrics

# File lib/rubocop/cop/mixin/configurable_enforced_style.rb, line 29
def style_detected(detected)
  return if no_acceptable_style?

  # This logic is more complex than it needs to be
  # to avoid allocating Arrays in the hot code path.
  updated_list =
    if detected_style
      if detected_style.size == 1 && detected_style.include?(SYMBOL_TO_STRING_CACHE[detected])
        detected_style
      else
        detected_as_strings = SYMBOL_TO_STRING_CACHE.values_at(*detected)
        detected_style & detected_as_strings
      end
    else
      # We haven't observed any specific style yet.
      SYMBOL_TO_STRING_CACHE.values_at(*detected)
    end

  if updated_list.empty?
    no_acceptable_style!
  else
    self.detected_style = updated_list
    config_to_allow_offenses[style_parameter_name] = updated_list.first
  end
end
style_parameter_name() click to toggle source
# File lib/rubocop/cop/mixin/configurable_enforced_style.rb, line 107
def style_parameter_name
  'EnforcedStyle'
end
supported_styles() click to toggle source
# File lib/rubocop/cop/mixin/configurable_enforced_style.rb, line 100
def supported_styles
  @supported_styles ||= begin
    supported_styles = Util.to_supported_styles(style_parameter_name)
    cop_config[supported_styles].map(&:to_sym)
  end
end
unexpected_style_detected(unexpected) click to toggle source
# File lib/rubocop/cop/mixin/configurable_enforced_style.rb, line 15
def unexpected_style_detected(unexpected)
  style_detected(unexpected)
end
unrecognized_style_detected()