mirror of
https://github.com/Mikaela/Limnoria.git
synced 2024-11-26 20:59:27 +01:00
Irc.callbacks is always mutated, never replaced, helping the Relay module out.
This commit is contained in:
parent
37b9342178
commit
714de6bfae
@ -245,10 +245,10 @@ class Irc(object):
|
|||||||
self.prefix = ''
|
self.prefix = ''
|
||||||
self.user = user or nick # Default to nick if user isn't provided.
|
self.user = user or nick # Default to nick if user isn't provided.
|
||||||
self.ident = ident or nick # Ditto.
|
self.ident = ident or nick # Ditto.
|
||||||
|
if callbacks is None:
|
||||||
self.callbacks = []
|
self.callbacks = []
|
||||||
if callbacks is not None:
|
else:
|
||||||
for callback in callbacks:
|
self.callbacks = callbacks
|
||||||
self.addCallback(callback)
|
|
||||||
self._nickmods = copy.copy(conf.nickmods)
|
self._nickmods = copy.copy(conf.nickmods)
|
||||||
self.state = IrcState()
|
self.state = IrcState()
|
||||||
self.queue = IrcMsgQueue()
|
self.queue = IrcMsgQueue()
|
||||||
@ -274,11 +274,15 @@ class Irc(object):
|
|||||||
|
|
||||||
def removeCallback(self, name):
|
def removeCallback(self, name):
|
||||||
ret = []
|
ret = []
|
||||||
|
toRemove = []
|
||||||
for (i, cb) in enumerate(self.callbacks):
|
for (i, cb) in enumerate(self.callbacks):
|
||||||
if cb.name() == name:
|
if cb.name() == name:
|
||||||
ret.append(self.callbacks[i])
|
toRemove.append(i)
|
||||||
self.callbacks[i] = None
|
if toRemove:
|
||||||
self.callbacks = [cb for cb in self.callbacks if cb is not None]
|
for i in reviter(range(len(self.callbacks))):
|
||||||
|
if toRemove[-1] == i:
|
||||||
|
toRemove.pop()
|
||||||
|
ret.append(self.callbacks.pop(i))
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
def queueMsg(self, msg):
|
def queueMsg(self, msg):
|
||||||
|
Loading…
Reference in New Issue
Block a user