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.py26
1 files changed, 17 insertions, 9 deletions
diff --git a/nikola/plugins/template_jinja.py b/nikola/plugins/template_jinja.py
index f88b2c0..b6d762b 100644
--- a/nikola/plugins/template_jinja.py
+++ b/nikola/plugins/template_jinja.py
@@ -8,11 +8,11 @@
# distribute, sublicense, and/or sell copies of the
# Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
-#
+#
# The above copyright notice and this permission notice
# shall be included in all copies or substantial portions of
# the Software.
-#
+#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
@@ -25,10 +25,11 @@
"""Jinja template handlers"""
import os
+import json
try:
import jinja2
except ImportError:
- jinja2 = None
+ jinja2 = None # NOQA
from nikola.plugin_categories import TemplateSystem
@@ -39,19 +40,26 @@ class JinjaTemplates(TemplateSystem):
name = "jinja"
lookup = None
+ def __init__(self):
+ """ initialize Jinja2 wrapper with extended set of filters"""
+ if jinja2 is None:
+ return
+ self.lookup = jinja2.Environment()
+ self.lookup.filters['tojson'] = json.dumps
+
def set_directories(self, directories, cache_folder):
"""Createa template lookup."""
if jinja2 is None:
- raise Exception('To use this theme you need to install the "Jinja2" package.')
- self.lookup = jinja2.Environment(loader=jinja2.FileSystemLoader(
- directories,
- encoding='utf-8',
- ))
+ raise Exception('To use this theme you need to install the '
+ '"Jinja2" package.')
+ self.lookup.loader = jinja2.FileSystemLoader(directories,
+ encoding='utf-8')
def render_template(self, template_name, output_name, context):
"""Render the template into output_name using context."""
if jinja2 is None:
- raise Exception('To use this theme you need to install the "Jinja2" package.')
+ raise Exception('To use this theme you need to install the '
+ '"Jinja2" package.')
template = self.lookup.get_template(template_name)
output = template.render(**context)
if output_name is not None: