comparison piecrust/processing/base.py @ 203:29165f2f315d

processing: More powerful syntax to specify pipeline processors. The syntax now supports `* -foo -bar` to load all processors except `foo` and `bar`.
author Ludovic Chabant <ludovic@chabant.com>
date Thu, 15 Jan 2015 22:54:59 -0800
parents 0c9de41689bb
children e725af1d48fb
comparison
equal deleted inserted replaced
202:cd049786c008 203:29165f2f315d
20 20
21 21
22 PRIORITY_FIRST = -1 22 PRIORITY_FIRST = -1
23 PRIORITY_NORMAL = 0 23 PRIORITY_NORMAL = 0
24 PRIORITY_LAST = 1 24 PRIORITY_LAST = 1
25
26
27 split_processor_names_re = re.compile(r'[ ,]+')
25 28
26 29
27 class Processor(object): 30 class Processor(object):
28 PROCESSOR_NAME = None 31 PROCESSOR_NAME = None
29 32
143 def filterProcessors(self, authorized_names): 146 def filterProcessors(self, authorized_names):
144 if not authorized_names or authorized_names == '*': 147 if not authorized_names or authorized_names == '*':
145 return self.processors 148 return self.processors
146 149
147 if isinstance(authorized_names, str): 150 if isinstance(authorized_names, str):
148 authorized_names = authorized_names.split(',') 151 authorized_names = split_processor_names_re.split(authorized_names)
152
153 procs = []
154 has_star = '*' in authorized_names
155 for p in self.processors:
156 for name in authorized_names:
157 if name == p.PROCESSOR_NAME:
158 procs.append(p)
159 break
160 if name == ('-%s' % p.PROCESSOR_NAME):
161 break
162 else:
163 if has_star:
164 procs.append(p)
165 return procs
166
149 return list(filter( 167 return list(filter(
150 lambda p: p.PROCESSOR_NAME in authorized_names, 168 lambda p: p.PROCESSOR_NAME in authorized_names,
151 self.processors)) 169 self.processors))
152 170
153 def run(self, src_dir_or_file=None, *, 171 def run(self, src_dir_or_file=None, *,