Sha256: d52d9cee91b3f61ef47720c180f0e43b784814ee97438dd51f3f5c6018fc77ee

Contents?: true

Size: 1.5 KB

Versions: 6

Compression:

Stored size: 1.5 KB

Contents

# encoding: utf-8

module Rubocop
  module Cop
    # Handles `EnforcedStyle` configuration parameters.
    module ConfigurableEnforcedStyle
      def opposite_style_detected
        self.config_to_allow_offenses ||=
          { parameter_name => alternative_style.to_s }
        both_styles_detected if config_to_allow_offenses['Enabled']
      end

      def correct_style_detected
        # Enabled:true indicates, later when the opposite style is detected,
        # that the correct style is used somewhere.
        self.config_to_allow_offenses ||= { 'Enabled' => true }
        both_styles_detected if config_to_allow_offenses[parameter_name]
      end

      def both_styles_detected
        # Both correct and opposite styles exist.
        self.config_to_allow_offenses = { 'Enabled' => false }
      end

      def unrecognized_style_detected
        # All we can do is to disable.
        self.config_to_allow_offenses = { 'Enabled' => false }
      end

      def style
        s = cop_config[parameter_name]
        if cop_config['SupportedStyles'].include?(s)
          s.to_sym
        else
          fail "Unknown style #{s} selected!"
        end
      end

      def alternative_style
        a = cop_config['SupportedStyles'].map(&:to_sym)
        if a.size != 2
          fail 'alternative_style can only be used when there are exactly ' \
               '2 SupportedStyles'
        end
        style == a.first ? a.last : a.first
      end

      def parameter_name
        'EnforcedStyle'
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
rubocop-0.22.0 lib/rubocop/cop/mixin/configurable_enforced_style.rb
rubocop-0.21.0 lib/rubocop/cop/mixin/configurable_enforced_style.rb
rubocop-0.20.1 lib/rubocop/cop/mixin/configurable_enforced_style.rb
rubocop-0.20.0 lib/rubocop/cop/mixin/configurable_enforced_style.rb
rubocop-0.19.1 lib/rubocop/cop/mixin/configurable_enforced_style.rb
rubocop-0.19.0 lib/rubocop/cop/mixin/configurable_enforced_style.rb