summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormartin f. krafft <madduck@madduck.net>2008-03-21 19:12:16 +0100
committerJoey Hess <joey@kodama.kitenet.net>2008-03-21 15:07:10 -0400
commit17dc5df1f5d1068ea0d18bc0bd1c75dc9ebeb65a (patch)
tree54740e27fde627b2e55faae20da1472addf3eabb
parent86ec72c8260a377617b215e7f021778f7507e3fb (diff)
Allow individual hook registration to override ID
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>
-rw-r--r--plugins/proxy.py13
1 files changed, 8 insertions, 5 deletions
diff --git a/plugins/proxy.py b/plugins/proxy.py
index ea0ca9646..b4758b060 100644
--- a/plugins/proxy.py
+++ b/plugins/proxy.py
@@ -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)