# HG changeset patch # User Ludovic Chabant # Date 1493351707 25200 # Node ID 8f8bbb2e70e1ea3959cbc5960dcaf6552a096039 # Parent 7d83b9484b98efad4b52e3beb8f597d23d0384d3 templating: Template engines can now load extensions directly from plugins. diff -r 7d83b9484b98 -r 8f8bbb2e70e1 piecrust/plugins/base.py --- 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: diff -r 7d83b9484b98 -r 8f8bbb2e70e1 piecrust/templating/jinjaengine.py --- 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" %