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>master
parent
86ec72c826
commit
17dc5df1f5
|
@ -178,13 +178,16 @@ class IkiWikiProcedureProxy(object):
|
||||||
ret = None
|
ret = None
|
||||||
return ret
|
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:
|
if self._imported:
|
||||||
raise IkiWikiProcedureProxy.AlreadyImported
|
raise IkiWikiProcedureProxy.AlreadyImported
|
||||||
|
|
||||||
if name is None:
|
if name is None:
|
||||||
name = function.__name__
|
name = function.__name__
|
||||||
|
|
||||||
|
if id is None:
|
||||||
|
id = self._id
|
||||||
|
|
||||||
def hook_proxy(*args):
|
def hook_proxy(*args):
|
||||||
# curpage = args[0]
|
# curpage = args[0]
|
||||||
# kwargs = dict([args[i:i+2] for i in xrange(1, len(args), 2)])
|
# 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
|
ret = IkiWikiProcedureProxy._IKIWIKI_NIL_SENTINEL
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
self._hooks.append((type, name, last))
|
self._hooks.append((id, type, name, last))
|
||||||
self._xmlrpc_handler.register_function(hook_proxy, name=name)
|
self._xmlrpc_handler.register_function(hook_proxy, name=name)
|
||||||
|
|
||||||
def inject(self, rname, function, name=None, memoize=True):
|
def inject(self, rname, function, name=None, memoize=True):
|
||||||
|
@ -258,9 +261,9 @@ class IkiWikiProcedureProxy(object):
|
||||||
|
|
||||||
def _importme(self):
|
def _importme(self):
|
||||||
self._debug_fn('importing...')
|
self._debug_fn('importing...')
|
||||||
for type, function, last in self._hooks:
|
for id, type, function, last in self._hooks:
|
||||||
self._debug_fn('hooking %s into %s chain...' % (function, type))
|
self._debug_fn('hooking %s/%s into %s chain...' % (id, function, type))
|
||||||
self.rpc('hook', id=self._id, type=type, call=function, last=last)
|
self.rpc('hook', id=id, type=type, call=function, last=last)
|
||||||
for rname, function, memoize in self._functions:
|
for rname, function, memoize in self._functions:
|
||||||
self._debug_fn('injecting %s as %s...' % (function, rname))
|
self._debug_fn('injecting %s as %s...' % (function, rname))
|
||||||
self.rpc('inject', name=rname, call=function, memoize=memoize)
|
self.rpc('inject', name=rname, call=function, memoize=memoize)
|
||||||
|
|
Loading…
Reference in New Issue