summaryrefslogtreecommitdiffstats
path: root/nikola/plugins/template_jinja.py
diff options
context:
space:
mode:
Diffstat (limited to 'nikola/plugins/template_jinja.py')
-rw-r--r--nikola/plugins/template_jinja.py38
1 files changed, 38 insertions, 0 deletions
diff --git a/nikola/plugins/template_jinja.py b/nikola/plugins/template_jinja.py
new file mode 100644
index 0000000..0893cf7
--- /dev/null
+++ b/nikola/plugins/template_jinja.py
@@ -0,0 +1,38 @@
+"""Jinja template handlers"""
+
+import os
+import jinja2
+
+from nikola.plugin_categories import TemplateSystem
+
+
+class JinjaTemplates(TemplateSystem):
+ """Wrapper for Jinja2 templates."""
+
+ name = "jinja"
+ lookup = None
+
+ def set_directories(self, directories):
+ """Createa template lookup."""
+ self.lookup = jinja2.Environment(loader=jinja2.FileSystemLoader(
+ directories,
+ encoding='utf-8',
+ ))
+
+ def render_template(self, template_name, output_name, context):
+ """Render the template into output_name using context."""
+
+ template = self.lookup.get_template(template_name)
+ output = template.render(**context)
+ if output_name is not None:
+ try:
+ os.makedirs(os.path.dirname(output_name))
+ except:
+ pass
+ with open(output_name, 'w+') as output:
+ output.write(output.encode('utf8'))
+ return output
+
+ def template_deps(self, template_name):
+ # FIXME: unimplemented
+ return []