# HG changeset patch # User Ludovic Chabant # Date 1421391299 28800 # Node ID 29165f2f315d782d087e088182a974b389eb57ed # Parent cd049786c00826cbfe60bf1ffacc9c259f628435 processing: More powerful syntax to specify pipeline processors. The syntax now supports `* -foo -bar` to load all processors except `foo` and `bar`. diff -r cd049786c008 -r 29165f2f315d piecrust/processing/base.py --- a/piecrust/processing/base.py Thu Jan 15 22:53:32 2015 -0800 +++ b/piecrust/processing/base.py Thu Jan 15 22:54:59 2015 -0800 @@ -24,6 +24,9 @@ PRIORITY_LAST = 1 +split_processor_names_re = re.compile(r'[ ,]+') + + class Processor(object): PROCESSOR_NAME = None @@ -145,7 +148,22 @@ return self.processors if isinstance(authorized_names, str): - authorized_names = authorized_names.split(',') + authorized_names = split_processor_names_re.split(authorized_names) + + procs = [] + has_star = '*' in authorized_names + for p in self.processors: + for name in authorized_names: + if name == p.PROCESSOR_NAME: + procs.append(p) + break + if name == ('-%s' % p.PROCESSOR_NAME): + break + else: + if has_star: + procs.append(p) + return procs + return list(filter( lambda p: p.PROCESSOR_NAME in authorized_names, self.processors))