Sha256: 6c25cb8397f22ab62cabe4c124e70ef15cea451fbd560a804e8ab8dbed7694ad

Contents?: true

Size: 1.62 KB

Versions: 11

Compression:

Stored size: 1.62 KB

Contents

# frozen_string_literal: true

module RuboCop
  module Cop
    # Handles the `MinSize` configuration option for array-based cops
    # `Style/SymbolArray` and `Style/WordArray`, which check for use of the
    # relevant percent literal syntax such as `%i[...]` and `%w[...]`
    module ArrayMinSize
      private

      def below_array_length?(node)
        node.values.length < min_size_config
      end

      def min_size_config
        cop_config['MinSize']
      end

      def array_style_detected(style, ary_size)
        cfg = config_to_allow_offenses
        return if cfg['Enabled'] == false

        largest_brackets = largest_brackets_size(style, ary_size)
        smallest_percent = smallest_percent_size(style, ary_size)

        if cfg['EnforcedStyle'] == style.to_s
          # do nothing
        elsif cfg['EnforcedStyle'].nil?
          cfg['EnforcedStyle'] = style.to_s
        elsif smallest_percent <= largest_brackets
          self.config_to_allow_offenses = { 'Enabled' => false }
        else
          cfg['EnforcedStyle'] = 'percent'
          cfg['MinSize'] = largest_brackets + 1
        end
      end

      def largest_brackets_size(style, ary_size)
        self.class.largest_brackets ||= -Float::INFINITY

        if style == :brackets && ary_size > self.class.largest_brackets
          self.class.largest_brackets = ary_size
        end

        self.class.largest_brackets
      end

      def smallest_percent_size(style, ary_size)
        @smallest_percent ||= Float::INFINITY

        @smallest_percent = ary_size if style == :percent && ary_size < @smallest_percent

        @smallest_percent
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 3 rubygems

Version Path
rubocop-0.88.0 lib/rubocop/cop/mixin/array_min_size.rb
rbhint-0.87.1.rc1 lib/rubocop/cop/mixin/array_min_size.rb
rubocop-0.87.1 lib/rubocop/cop/mixin/array_min_size.rb
rubocop-0.87.0 lib/rubocop/cop/mixin/array_min_size.rb
rubocop-0.86.0 lib/rubocop/cop/mixin/array_min_size.rb
files.com-1.0.1 vendor/bundle/ruby/2.5.0/gems/rubocop-0.85.1/lib/rubocop/cop/mixin/array_min_size.rb
rbhint-0.85.1.rc2 lib/rubocop/cop/mixin/array_min_size.rb
rbhint-0.85.1.rc1 lib/rubocop/cop/mixin/array_min_size.rb
rubocop-0.85.1 lib/rubocop/cop/mixin/array_min_size.rb
rbhint-0.8.5.rc1 lib/rubocop/cop/mixin/array_min_size.rb
rubocop-0.85.0 lib/rubocop/cop/mixin/array_min_size.rb