Class: RuboCop::FilePatterns Private
Do not use. This class is for internal use only.
Relationships & Source Files | |
Inherits: | Object |
Defined in: | lib/rubocop/file_patterns.rb |
Overview
A wrapper around patterns array to perform optimized search.
For projects with a large set of rubocop todo files, most items in Exclude
/Include
are exact file names. It is wasteful to linearly check the list of patterns over and over
to check if the file is relevant to the cop.
This class partitions an array of patterns into a set of exact match strings and the rest of the patterns. This way we can firstly do a cheap check in the set and then proceed via the costly patterns check, if needed.
Class Method Summary
- .from(patterns) Internal use only
- .new(patterns) ⇒ FilePatterns constructor Internal use only
Instance Method Summary
- #match?(path) ⇒ Boolean Internal use only
- #partition_patterns(patterns) private Internal use only
Class Method Details
.from(patterns)
[ GitHub ]# File 'lib/rubocop/file_patterns.rb', line 17
def self.from(patterns) @cache[patterns] ||= new(patterns) end
Instance Method Details
#match?(path) ⇒ Boolean
# File 'lib/rubocop/file_patterns.rb', line 27
def match?(path) @strings.include?(path) || @patterns.any? { |pattern| PathUtil.match_path?(pattern, path) } end