- pattern_str = pattern
- if pattern[0:1] == b'!':
- is_exclude = False
- pattern = pattern[1:]
- else:
- if pattern[0:1] == b'\\':
- pattern = pattern[1:]
- is_exclude = True
- self._patterns.append(
- (is_exclude, re.compile(translate(pattern)), pattern_str))
+ self._patterns.append(Pattern(pattern))
+
+ def find_matching(self, path):
+ """Yield all matching patterns for path.
+
+ :param path: Path to match
+ :return: Iterator over iterators
+ """
+ if not isinstance(path, bytes):
+ path = path.encode(sys.getfilesystemencoding())
+ for pattern in self._patterns:
+ if pattern.match(path):
+ yield pattern