mirror of
https://github.com/Mikaela/Limnoria.git
synced 2024-11-23 19:19:32 +01:00
Extracted alias-adding functionality out into a function usable from within other plugins.
This commit is contained in:
parent
30bedebba3
commit
dca69510f3
@ -89,7 +89,10 @@ example = utils.wrapLines("""
|
|||||||
<supybot> jemfinch: Alias for 'rsstitles http://slashdot.org/slashdot.rss'
|
<supybot> jemfinch: Alias for 'rsstitles http://slashdot.org/slashdot.rss'
|
||||||
""")
|
""")
|
||||||
|
|
||||||
class RecursiveAlias(Exception):
|
class AliasError(Exception):
|
||||||
|
pass
|
||||||
|
|
||||||
|
class RecursiveAlias(AliasError):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def findAliasCommand(s, alias):
|
def findAliasCommand(s, alias):
|
||||||
@ -170,6 +173,24 @@ class Alias(callbacks.Privmsg):
|
|||||||
irc.error(msg, 'There is no such alias.')
|
irc.error(msg, 'There is no such alias.')
|
||||||
unfreeze = privmsgs.checkCapability(unfreeze, 'admin')
|
unfreeze = privmsgs.checkCapability(unfreeze, 'admin')
|
||||||
|
|
||||||
|
def addAlias(self, irc, name, alias, freeze=False):
|
||||||
|
realName = callbacks.canonicalName(name)
|
||||||
|
if name != realName:
|
||||||
|
raise AliasError,'That name isn\'t valid. Try %r instead'%realName
|
||||||
|
name = realName
|
||||||
|
cb = callbacks.findCallbackForCommand(irc, name)
|
||||||
|
if cb is not None and cb != self:
|
||||||
|
raise AliasError, 'A command with that name already exists.'
|
||||||
|
if name in self.frozen:
|
||||||
|
raise AliasError, 'That alias is frozen.'
|
||||||
|
try:
|
||||||
|
f = makeNewAlias(name, alias)
|
||||||
|
except RecursiveAlias:
|
||||||
|
raise AliasError, 'You can\'t define a recursive alias.'
|
||||||
|
setattr(self.__class__, name, f)
|
||||||
|
if freeze:
|
||||||
|
self.frozen.add(name)
|
||||||
|
|
||||||
def alias(self, irc, msg, args):
|
def alias(self, irc, msg, args):
|
||||||
"""<name> <alias commands>
|
"""<name> <alias commands>
|
||||||
|
|
||||||
@ -179,28 +200,11 @@ class Alias(callbacks.Privmsg):
|
|||||||
itself; for instance ...
|
itself; for instance ...
|
||||||
"""
|
"""
|
||||||
(name, alias) = privmsgs.getArgs(args, needed=2)
|
(name, alias) = privmsgs.getArgs(args, needed=2)
|
||||||
realName = callbacks.canonicalName(name)
|
|
||||||
if name != realName:
|
|
||||||
irc.error(msg, 'That name isn\'t valid. Try %r instead.' %\
|
|
||||||
realName)
|
|
||||||
return
|
|
||||||
else:
|
|
||||||
name = realName
|
|
||||||
cb = irc.findCallback(name)
|
|
||||||
if cb is not None and cb != self:
|
|
||||||
irc.error(msg, 'A command with that name already exists.')
|
|
||||||
return
|
|
||||||
if name in self.frozen:
|
|
||||||
irc.error(msg, 'That alias is frozen.')
|
|
||||||
return
|
|
||||||
try:
|
try:
|
||||||
f = makeNewAlias(name, alias)
|
self.addAlias(irc, name, alias)
|
||||||
except RecursiveAlias:
|
|
||||||
irc.error(msg, 'You can\'t define a recursive alias.')
|
|
||||||
return
|
|
||||||
setattr(self.__class__, name, f)
|
|
||||||
irc.reply(msg, conf.replySuccess)
|
irc.reply(msg, conf.replySuccess)
|
||||||
|
except AliasError, e:
|
||||||
|
irc.error(msg, str(e))
|
||||||
|
|
||||||
def unalias(self, irc, msg, args):
|
def unalias(self, irc, msg, args):
|
||||||
"""<name>
|
"""<name>
|
||||||
|
@ -102,6 +102,11 @@ class AliasTestCase(PluginTestCase, PluginDocumentation):
|
|||||||
self.assertNotError('mytell #foo bugs')
|
self.assertNotError('mytell #foo bugs')
|
||||||
self.assertNoResponse('blah blah blah', 2)
|
self.assertNoResponse('blah blah blah', 2)
|
||||||
|
|
||||||
|
def testAddAlias(self):
|
||||||
|
cb = self.irc.getCallback('Alias')
|
||||||
|
cb.addAlias(self.irc, 'foobar', 'rot13 foobar')
|
||||||
|
self.assertResponse('foobar', 'sbbone')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# vim:set shiftwidth=4 tabstop=8 expandtab textwidth=78:
|
# vim:set shiftwidth=4 tabstop=8 expandtab textwidth=78:
|
||||||
|
Loading…
Reference in New Issue
Block a user