Mercurial > piecrust2
comparison piecrust/templating/jinjaengine.py @ 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 | c40b7923c474 |
children | 6ca1b6fb9964 |
comparison
equal
deleted
inserted
replaced
486:aae241804096 | 487:61508ae67488 |
---|---|
84 | 84 |
85 def _ensureLoaded(self): | 85 def _ensureLoaded(self): |
86 if self.env: | 86 if self.env: |
87 return | 87 return |
88 | 88 |
89 autoescape = self.app.config.get('jinja/auto_escape') | 89 # Get the list of extensions to load. |
90 if autoescape is None: | 90 ext_names = self.app.config.get('jinja/extensions', []) |
91 autoescape = self.app.config.get('twig/auto_escape') | 91 if not isinstance(ext_names, list): |
92 if autoescape is None: | 92 ext_names = [ext_names] |
93 autoescape = True | 93 |
94 | 94 # Turn on autoescape by default. |
95 logger.debug("Creating Jinja environment with folders: %s" % | 95 autoescape = self.app.config.get('twig/auto_escape') |
96 self.app.templates_dirs) | 96 if autoescape is not None: |
97 loader = PieCrustLoader(self.app.templates_dirs) | 97 logger.warning("The `twig/auto_escape` setting is now called " |
98 "`jinja/auto_escape`.") | |
99 else: | |
100 autoescape = self.app.config.get('jinja/auto_escape', True) | |
101 if autoescape: | |
102 ext_names.append('autoescape') | |
103 | |
104 # Create the final list of extensions. | |
98 extensions = [ | 105 extensions = [ |
99 PieCrustHighlightExtension, | 106 PieCrustHighlightExtension, |
100 PieCrustCacheExtension, | 107 PieCrustCacheExtension, |
101 PieCrustSpacelessExtension, | 108 PieCrustSpacelessExtension, |
102 PieCrustFormatExtension] | 109 PieCrustFormatExtension] |
103 if autoescape: | 110 for n in ext_names: |
104 extensions.append('jinja2.ext.autoescape') | 111 if '.' not in n: |
112 n = 'jinja2.ext.' + n | |
113 extensions.append(n) | |
114 | |
115 # Create the Jinja environment. | |
116 logger.debug("Creating Jinja environment with folders: %s" % | |
117 self.app.templates_dirs) | |
118 loader = PieCrustLoader(self.app.templates_dirs) | |
105 self.env = PieCrustEnvironment( | 119 self.env = PieCrustEnvironment( |
106 self.app, | 120 self.app, |
107 loader=loader, | 121 loader=loader, |
108 extensions=extensions) | 122 extensions=extensions) |
109 | 123 |