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