Mercurial > piecrust2
changeset 849:8f8bbb2e70e1
templating: Template engines can now load extensions directly from plugins.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Thu, 27 Apr 2017 20:55:07 -0700 |
parents | 7d83b9484b98 |
children | 370e74941d32 |
files | piecrust/plugins/base.py piecrust/templating/jinjaengine.py |
diffstat | 2 files changed, 11 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/piecrust/plugins/base.py Thu Apr 27 20:54:29 2017 -0700 +++ b/piecrust/plugins/base.py Thu Apr 27 20:55:07 2017 -0700 @@ -15,6 +15,9 @@ def getTemplateEngines(self): return [] + def getTemplateEngineExtensions(self, engine_name): + return [] + def getDataProviders(self): return [] @@ -69,6 +72,10 @@ initialize=True, register_timer=True, register_timer_suffixes=['_segment', '_layout']) + def getTemplateEngineExtensions(self, engine_name): + return self._getPluginComponents('getTemplateEngineExtensions', + engine_name) + def getDataProviders(self): return self._getPluginComponents('getDataProviders') @@ -153,7 +160,7 @@ return plugin - def _getPluginComponents(self, name, *, + def _getPluginComponents(self, name, *args, initialize=False, register_timer=False, register_timer_suffixes=None, @@ -163,7 +170,7 @@ all_components = [] for plugin in self.plugins: - plugin_components = getattr(plugin, name)() + plugin_components = getattr(plugin, name)(*args) all_components += plugin_components if initialize:
--- a/piecrust/templating/jinjaengine.py Thu Apr 27 20:54:29 2017 -0700 +++ b/piecrust/templating/jinjaengine.py Thu Apr 27 20:55:07 2017 -0700 @@ -127,6 +127,8 @@ if '.' not in n: n = 'jinja2.ext.' + n extensions.append(n) + for je in self.app.plugin_loader.getTemplateEngineExtensions('jinja'): + extensions.append(je) # Create the Jinja environment. logger.debug("Creating Jinja environment with folders: %s" %