class RuboCop::OptimizedPatterns::PatternsSet

A wrapper around patterns array to perform optimized search. @api private

Public Class Methods

new(patterns) click to toggle source
# File lib/rubocop/optimized_patterns.rb, line 9
def initialize(patterns)
  @strings = Set.new
  @patterns = []
  partition_patterns(patterns)
end

Public Instance Methods

match?(path) click to toggle source
# File lib/rubocop/optimized_patterns.rb, line 15
def match?(path)
  @strings.include?(path) || @patterns.any? { |pattern| PathUtil.match_path?(pattern, path) }
end

Private Instance Methods

partition_patterns(patterns) click to toggle source
# File lib/rubocop/optimized_patterns.rb, line 21
def partition_patterns(patterns)
  patterns.each do |pattern|
    if pattern.is_a?(String) && !pattern.match?(/[*{\[?]/)
      @strings << pattern
    else
      @patterns << pattern
    end
  end
end