class Steep::Project::Pattern
def =~(path)
def =~(path) unless path.is_a?(Pathname) path = Pathname(path.to_s) end match?(path) && !ignore?(path) end
def ignore?(path)
def ignore?(path) test_string(path, ignores, ignore_prefixes) end
def initialize(patterns:, ignores: [], ext:)
def initialize(patterns:, ignores: [], ext:) @patterns = patterns @ignores = ignores @ext = ext @prefixes = patterns.map do |pat| if pat == "." || pat == "./" "" else pat.delete_prefix("./").delete_suffix(File::Separator) << File::Separator end end @ignore_prefixes = ignores.map do |pat| if pat == "." || pat == "./" "" else pat.delete_prefix("./").delete_suffix(File::Separator) << File::Separator end end end
def match?(path)
def match?(path) test_string(path, patterns, prefixes) end
def test_string(path, patterns, prefixes)
def test_string(path, patterns, prefixes) string = path.to_s extension = path.extname patterns.any? {|pat| File.fnmatch(pat, string) } || prefixes.any? {|prefix| string.start_with?(prefix) && extension == ext } end