Mercurial > piecrust2
changeset 487:61508ae67488
templating: Make Jinja support arbitrary extension, show warning for old stuff.
* Show a warning when using old Twig setting.
* Acceept a list of extension names to activate.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Wed, 22 Jul 2015 20:01:56 -0700 |
parents | aae241804096 |
children | a00750896316 |
files | piecrust/templating/jinjaengine.py |
diffstat | 1 files changed, 24 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/piecrust/templating/jinjaengine.py Wed Jul 22 20:00:14 2015 -0700 +++ b/piecrust/templating/jinjaengine.py Wed Jul 22 20:01:56 2015 -0700 @@ -86,22 +86,36 @@ if self.env: return - autoescape = self.app.config.get('jinja/auto_escape') - if autoescape is None: - autoescape = self.app.config.get('twig/auto_escape') - if autoescape is None: - autoescape = True + # Get the list of extensions to load. + ext_names = self.app.config.get('jinja/extensions', []) + if not isinstance(ext_names, list): + ext_names = [ext_names] - logger.debug("Creating Jinja environment with folders: %s" % - self.app.templates_dirs) - loader = PieCrustLoader(self.app.templates_dirs) + # Turn on autoescape by default. + autoescape = self.app.config.get('twig/auto_escape') + if autoescape is not None: + logger.warning("The `twig/auto_escape` setting is now called " + "`jinja/auto_escape`.") + else: + autoescape = self.app.config.get('jinja/auto_escape', True) + if autoescape: + ext_names.append('autoescape') + + # Create the final list of extensions. extensions = [ PieCrustHighlightExtension, PieCrustCacheExtension, PieCrustSpacelessExtension, PieCrustFormatExtension] - if autoescape: - extensions.append('jinja2.ext.autoescape') + for n in ext_names: + if '.' not in n: + n = 'jinja2.ext.' + n + extensions.append(n) + + # Create the Jinja environment. + logger.debug("Creating Jinja environment with folders: %s" % + self.app.templates_dirs) + loader = PieCrustLoader(self.app.templates_dirs) self.env = PieCrustEnvironment( self.app, loader=loader,