]> sipb.mit.edu Git - ikiwiki.git/commitdiff
Allow individual hook registration to override ID
authormartin f. krafft <madduck@madduck.net>
Fri, 21 Mar 2008 18:12:16 +0000 (19:12 +0100)
committerJoey Hess <joey@kodama.kitenet.net>
Fri, 21 Mar 2008 19:07:10 +0000 (15:07 -0400)
The preprocessor hooks need to specify IDs different from the ID used to
initialise the proxy. Thus, the hook function now takes an optional id
keyword argument and uses the ID used during initialisation if none is
provided.

Signed-off-by: martin f. krafft <madduck@madduck.net>
plugins/proxy.py

index ea0ca96462c500e790b19dfb2d869eb803845e46..b4758b06059cc60ca5e33c257ad95cf9c2feea7a 100644 (file)
@@ -178,13 +178,16 @@ class IkiWikiProcedureProxy(object):
             ret = None
         return ret
 
-    def hook(self, type, function, name=None, last=False):
+    def hook(self, type, function, name=None, id=None, last=False):
         if self._imported:
             raise IkiWikiProcedureProxy.AlreadyImported
 
         if name is None:
             name = function.__name__
 
+        if id is None:
+            id = self._id
+
         def hook_proxy(*args):
 #            curpage = args[0]
 #            kwargs = dict([args[i:i+2] for i in xrange(1, len(args), 2)])
@@ -198,7 +201,7 @@ class IkiWikiProcedureProxy(object):
                 ret = IkiWikiProcedureProxy._IKIWIKI_NIL_SENTINEL
             return ret
 
-        self._hooks.append((type, name, last))
+        self._hooks.append((id, type, name, last))
         self._xmlrpc_handler.register_function(hook_proxy, name=name)
 
     def inject(self, rname, function, name=None, memoize=True):
@@ -258,9 +261,9 @@ class IkiWikiProcedureProxy(object):
 
     def _importme(self):
         self._debug_fn('importing...')
-        for type, function, last in self._hooks:
-            self._debug_fn('hooking %s into %s chain...' % (function, type))
-            self.rpc('hook', id=self._id, type=type, call=function, last=last)
+        for id, type, function, last in self._hooks:
+            self._debug_fn('hooking %s/%s into %s chain...' % (id, function, type))
+            self.rpc('hook', id=id, type=type, call=function, last=last)
         for rname, function, memoize in self._functions:
             self._debug_fn('injecting %s as %s...' % (function, rname))
             self.rpc('inject', name=rname, call=function, memoize=memoize)