made karma case-insensitive

This commit is contained in:
Daniel DiPaolo 2003-10-31 21:03:35 +00:00
parent 07ef648e1c
commit 15b18edc11
2 changed files with 15 additions and 6 deletions

View File

@ -359,26 +359,28 @@ class ChannelDB(plugins.ChannelDBHandler, callbacks.PrivmsgCommandAndRegexp):
db = self.getDb(channel)
cursor = db.cursor()
if len(args) == 1:
name = args[0]
orig_name = args[0]
name = args[0].lower()
cursor.execute("""SELECT added, subtracted
FROM karma
WHERE name=%s""", name)
if cursor.rowcount == 0:
irc.reply(msg, '%s has no karma.' % name)
irc.reply(msg, '%s has no karma.' % orig_name)
else:
(added, subtracted) = map(int, cursor.fetchone())
total = added - subtracted
s = 'Karma for %r has been increased %s %s ' \
'and decreased %s %s for a total karma of %s.' % \
(name, added, utils.pluralize(added, 'time'),
(orig_name, added, utils.pluralize(added, 'time'),
subtracted, utils.pluralize(subtracted, 'time'), total)
irc.reply(msg, s)
elif len(args) > 1:
lowered_args = map(str.lower, args)
criteria = ' OR '.join(['name=%s'] * len(args))
sql = """SELECT name, added-subtracted
FROM karma WHERE %s
ORDER BY added-subtracted DESC""" % criteria
cursor.execute(sql, *args)
cursor.execute(sql, *lowered_args)
if cursor.rowcount > 0:
s = utils.commaAndify(['%s: %s' % (n, t)
for (n,t) in cursor.fetchall()])
@ -403,7 +405,7 @@ class ChannelDB(plugins.ChannelDBHandler, callbacks.PrivmsgCommandAndRegexp):
def increaseKarma(self, irc, msg, match):
r"^(\S+)\+\+$"
name = match.group(1)
name = match.group(1).lower()
db = self.getDb(msg.args[0])
cursor = db.cursor()
cursor.execute("""INSERT INTO karma VALUES (NULL, %s, 0, 0)""", name)
@ -411,7 +413,7 @@ class ChannelDB(plugins.ChannelDBHandler, callbacks.PrivmsgCommandAndRegexp):
def decreaseKarma(self, irc, msg, match):
r"^(\S+)--$"
name = match.group(1)
name = match.group(1).lower()
db = self.getDb(msg.args[0])
cursor = db.cursor()
cursor.execute("""INSERT INTO karma VALUES (NULL, %s, 0, 0)""", name)

View File

@ -85,6 +85,13 @@ if sqlite is not None:
self.assertNoResponse('foo++', 2)
self.assertNoResponse('bar--', 2)
self.assertRegexp('karma foo bar foobar', '.*foo.*foobar.*bar.*')
# Test case-insensitive
self.assertNoResponse('MOO++', 2)
self.assertRegexp('karma moo', 'Karma for \'moo\'.*increased 1'
'.*total.*1')
self.assertRegexp('karma MoO', 'Karma for \'MoO\'.*increased 1'
'.*total.*1')
# vim:set shiftwidth=4 tabstop=8 expandtab textwidth=78: