- def hook(self, type, function):
- self._hooks.append((type, function.__name__))
- self._xmlrpc_handler.register_function(function)
+ def hook(self, type, function, name=None):
+ if name is None:
+ name = function.__name__
+ self._hooks.append((type, name))
+
+ def hook_proxy(*args):
+# curpage = args[0]
+# kwargs = dict([args[i:i+2] for i in xrange(1, len(args), 2)])
+ ret = function(*args)
+ self._debug_fn("%s hook `%s' returned: [%s]" % (type, name, ret))
+ if ret == IkiWikiProcedureProxy._IKIWIKI_NIL_SENTINEL:
+ raise IkiWikiProcedureProxy.InvalidReturnValue, \
+ 'hook functions are not allowed to return %s' \
+ % IkiWikiProcedureProxy._IKIWIKI_NIL_SENTINEL
+ if ret is None:
+ ret = IkiWikiProcedureProxy._IKIWIKI_NIL_SENTINEL
+ return ret
+
+ self._xmlrpc_handler.register_function(hook_proxy, name=name)