added format_advanced jinja filter to template module
parent
e2deb94e73
commit
d9a464ee9d
|
@ -19,6 +19,7 @@
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
import os
|
import os
|
||||||
|
import collections
|
||||||
import jinja2
|
import jinja2
|
||||||
import shlex
|
import shlex
|
||||||
try:
|
try:
|
||||||
|
@ -26,6 +27,21 @@ try:
|
||||||
except ImportError:
|
except ImportError:
|
||||||
import simplejson as json
|
import simplejson as json
|
||||||
|
|
||||||
|
environment = jinja2.Environment()
|
||||||
|
|
||||||
|
def format_advanced(fmt, data):
|
||||||
|
# jinja2 filter to use advanced python string formatting
|
||||||
|
# e.g, {{ "{0} {1} {2}"|format_advanced(['a', 'b', 'c']) }}
|
||||||
|
# see http://docs.python.org/library/string.html#formatstrings
|
||||||
|
if isinstance(data, collections.Mapping):
|
||||||
|
return fmt.format(**data)
|
||||||
|
elif isinstance(data, collections.Sequence):
|
||||||
|
return fmt.format(*data)
|
||||||
|
else:
|
||||||
|
return data
|
||||||
|
|
||||||
|
environment.filters['format_advanced'] = format_advanced
|
||||||
|
|
||||||
# ===========================================
|
# ===========================================
|
||||||
# convert arguments of form a=b c=d
|
# convert arguments of form a=b c=d
|
||||||
# to a dictionary
|
# to a dictionary
|
||||||
|
@ -91,7 +107,7 @@ if os.path.exists(dest):
|
||||||
md5sum = os.popen("md5sum %s" % dest).read().split()[0]
|
md5sum = os.popen("md5sum %s" % dest).read().split()[0]
|
||||||
|
|
||||||
# call Jinja2 here and save the new template file
|
# call Jinja2 here and save the new template file
|
||||||
template = jinja2.Template(source)
|
template = environment.from_string(source)
|
||||||
data_out = template.render(data)
|
data_out = template.render(data)
|
||||||
f = open(dest, "w+")
|
f = open(dest, "w+")
|
||||||
f.write(data_out)
|
f.write(data_out)
|
||||||
|
|
Loading…
Reference in New Issue