summaryrefslogtreecommitdiff
path: root/contrib/render.py
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/render.py')
-rwxr-xr-xcontrib/render.py38
1 files changed, 38 insertions, 0 deletions
diff --git a/contrib/render.py b/contrib/render.py
new file mode 100755
index 00000000..d31c7f9b
--- /dev/null
+++ b/contrib/render.py
@@ -0,0 +1,38 @@
+#!/usr/bin/python
+# This file is in the public domain.
+
+"""
+Expand Jinja2 templates based on JSON input.
+
+First command-line argument must be the JSON input.
+The tool reads the template from stdin and writes
+the expanded output to stdout.
+
+@author Christian Grothoff
+"""
+
+import sys
+import json
+import jinja2
+from jinja2 import BaseLoader
+
+
+class StdinLoader(BaseLoader):
+ def __init__ (self):
+ self.path = '-'
+ def get_source(self, environment, template):
+ source = sys.stdin.read().decode('utf-8')
+ return source, self.path, lambda: false
+
+
+jsonFile = open (sys.argv[1], 'r')
+jsonData = json.load(jsonFile)
+
+jinjaEnv = jinja2.Environment(loader=StdinLoader(),
+ lstrip_blocks=True,
+ trim_blocks=True,
+ undefined=jinja2.StrictUndefined,
+ autoescape=False)
+tmpl = jinjaEnv.get_template('stdin');
+
+print(tmpl.render(data = jsonData))