@@ -212,7 +212,7 @@ def _parse_env(data):
212212}
213213
214214
215- def render (template_path , data , extensions , strict = False ):
215+ def render (template_path , data , extensions , filters , strict = False ):
216216 from jinja2 import Environment , FileSystemLoader , StrictUndefined
217217
218218 env = Environment (
@@ -227,6 +227,13 @@ def render(template_path, data, extensions, strict=False):
227227 env .globals ["environ" ] = lambda key : force_text (os .environ .get (key ))
228228 env .globals ["get_context" ] = lambda : data
229229
230+ if filters :
231+ from jinja2 .utils import import_string
232+
233+ for filter in set (filters ):
234+ filter = import_string (filter )
235+ env .filters [filter .__name__ ] = filter
236+
230237 return env .get_template (os .path .basename (template_path )).render (data )
231238
232239
@@ -312,7 +319,7 @@ def cli(opts, args):
312319
313320 out = codecs .getwriter ("utf8" )(out )
314321
315- out .write (render (template_path , data , extensions , opts .strict ))
322+ out .write (render (template_path , data , extensions , opts .filters , opts . strict ))
316323 out .flush ()
317324 return 0
318325
@@ -379,6 +386,14 @@ def main():
379386 action = "append" ,
380387 default = ["do" , "with_" , "autoescape" , "loopcontrols" ],
381388 )
389+ parser .add_option (
390+ "-f" ,
391+ "--filter" ,
392+ help = "extra jinja2 filters to load" ,
393+ dest = "filters" ,
394+ action = "append" ,
395+ default = [],
396+ )
382397 parser .add_option (
383398 "-D" ,
384399 help = "Define template variable in the form of key=value" ,
0 commit comments