diff piecrust/plugins/base.py @ 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 4850f8c21b6e 46025a1b5434
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: