mirror of
https://github.com/Mikaela/Limnoria.git
synced 2024-12-24 03:33:11 +01:00
Added change.
This commit is contained in:
parent
af32b12745
commit
06ce1bcb94
@ -351,6 +351,44 @@ class Factoids(plugins.ChannelDBHandler, callbacks.Privmsg):
|
||||
utils.nItems(counter, 'factoid'), factoids)
|
||||
irc.reply(msg, s)
|
||||
|
||||
def change(self, irc, msg, args):
|
||||
"""[<channel>] <key> <number> <regexp>
|
||||
|
||||
Changes the factoid #<number> associated with <key> according to
|
||||
<regexp>.
|
||||
"""
|
||||
channel = privmsgs.getChannel(msg, args)
|
||||
(key, number, regexp) = privmsgs.getArgs(args, needed=3)
|
||||
try:
|
||||
replacer = utils.perlReToReplacer(regexp)
|
||||
except ValueError, e:
|
||||
irc.error(msg, 'Invalid regexp: %s' % e)
|
||||
return
|
||||
try:
|
||||
number = int(number)
|
||||
if number <= 0:
|
||||
raise ValueError
|
||||
except ValueError:
|
||||
irc.error(msg, 'Invalid key id.')
|
||||
return
|
||||
db = self.getDb(channel)
|
||||
cursor = db.cursor()
|
||||
cursor.execute("""SELECT factoids.id, factoids.fact
|
||||
FROM keys, factoids
|
||||
WHERE keys.key LIKE %s AND
|
||||
keys.id=factoids.key_id""", key)
|
||||
if cursor.rowcount == 0:
|
||||
irc.error(msg, 'I couldn\'t find any key %r' % key)
|
||||
return
|
||||
elif cursor.rowcount < number:
|
||||
irc.error(msg, 'That\'s not a valid key id.')
|
||||
return
|
||||
(id, fact) = cursor.fetchall()[number-1]
|
||||
newfact = replacer(fact)
|
||||
cursor.execute("UPDATE factoids SET fact=%s WHERE id=%s", newfact, id)
|
||||
db.commit()
|
||||
irc.reply(msg, conf.replySuccess)
|
||||
|
||||
_sqlTrans = string.maketrans('*?', '%_')
|
||||
def search(self, irc, msg, args):
|
||||
"""[<channel>] [--{regexp,exact}=<value>] [<glob>]
|
||||
|
@ -76,6 +76,13 @@ if sqlite is not None:
|
||||
self.assertError('learn foo bar baz') # No 'as'
|
||||
self.assertError('learn foo bar') # No 'as'
|
||||
|
||||
def testChangeFactoid(self):
|
||||
self.assertNotError('learn foo as bar')
|
||||
self.assertNotError('change foo 1 s/bar/baz/')
|
||||
self.assertRegexp('whatis foo', 'baz')
|
||||
self.assertError('change foo 2 s/bar/baz/')
|
||||
self.assertError('change foo 0 s/bar/baz/')
|
||||
|
||||
def testSearchFactoids(self):
|
||||
self.assertNotError('learn jemfinch as my primary author')
|
||||
self.assertNotError('learn strike as a cool guy working on me')
|
||||
|
Loading…
Reference in New Issue
Block a user