Mercurial > piecrust2
diff piecrust/processing/base.py @ 35:e4c345dcf33c
More unit tests, fix a bug with the skip patterns.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Wed, 20 Aug 2014 21:46:27 -0700 |
parents | df790a827d38 |
children | 485682a6de50 |
line wrap: on
line diff
--- a/piecrust/processing/base.py Wed Aug 20 14:55:23 2014 -0700 +++ b/piecrust/processing/base.py Wed Aug 20 21:46:27 2014 -0700 @@ -160,6 +160,11 @@ self.skip_patterns = make_re(self.skip_patterns) self.force_patterns = make_re(self.force_patterns) + def filterProcessors(self, authorized_names): + self.processors = list(filter( + lambda p: p.PROCESSOR_NAME in authorized_names, + self.processors)) + def run(self, src_dir_or_file=None): record = ProcessorPipelineRecord() @@ -221,12 +226,10 @@ for dirpath, dirnames, filenames in os.walk(start_dir): rel_dirpath = os.path.relpath(dirpath, start_dir) dirnames[:] = [d for d in dirnames - if not re_matchany(os.path.join(rel_dirpath, d), - self.skip_patterns)] + if not re_matchany(d, self.skip_patterns, rel_dirpath)] for filename in filenames: - if re_matchany(os.path.join(rel_dirpath, filename), - self.skip_patterns): + if re_matchany(filename, self.skip_patterns, rel_dirpath): continue self.processFile(ctx, os.path.join(dirpath, filename)) @@ -328,7 +331,10 @@ return [re.compile(p) for p in re_patterns] -def re_matchany(filename, patterns): +def re_matchany(filename, patterns, dirname=None): + if dirname and dirname != '.': + filename = os.path.join(dirname, filename) + # skip patterns use a forward slash regardless of the platform. filename = filename.replace('\\', '/') for pattern in patterns: