@@ -242,7 +242,7 @@ def _load_json5():
242242}
243243
244244
245- def render (template_path , data , extensions , strict = False ):
245+ def render (template_path , data , extensions , filters , strict = False ):
246246 from jinja2 import (
247247 __version__ as jinja_version ,
248248 Environment ,
@@ -273,6 +273,13 @@ def render(template_path, data, extensions, strict=False):
273273 env .globals ["environ" ] = lambda key : force_text (os .environ .get (key ))
274274 env .globals ["get_context" ] = lambda : data
275275
276+ if filters :
277+ from jinja2 .utils import import_string
278+
279+ for filter in set (filters ):
280+ filter = import_string (filter )
281+ env .filters [filter .__name__ ] = filter
282+
276283 return env .get_template (os .path .basename (template_path )).render (data )
277284
278285
@@ -362,7 +369,7 @@ def cli(opts, args):
362369
363370 out = codecs .getwriter ("utf8" )(out )
364371
365- out .write (render (template_path , data , extensions , opts .strict ))
372+ out .write (render (template_path , data , extensions , opts .filters , opts . strict ))
366373 out .flush ()
367374 return 0
368375
@@ -430,6 +437,14 @@ def main():
430437 action = "append" ,
431438 default = ["do" , "loopcontrols" ],
432439 )
440+ parser .add_option (
441+ "-f" ,
442+ "--filter" ,
443+ help = "extra jinja2 filters to load" ,
444+ dest = "filters" ,
445+ action = "append" ,
446+ default = [],
447+ )
433448 parser .add_option (
434449 "-D" ,
435450 help = "Define template variable in the form of key=value" ,
0 commit comments