Could have sworn I committed this already... turns on globbing by default (I

think .. too lazy to diff and see if that's what changed)
This commit is contained in:
Daniel DiPaolo 2003-10-22 16:01:05 +00:00
parent 89e5a4aa0e
commit 93f19492ca

View File

@ -505,43 +505,44 @@ class MoobotFactoids(callbacks.PrivmsgCommandAndRegexp):
(author, len(keys), utils.commaAndify(keys)) (author, len(keys), utils.commaAndify(keys))
irc.reply(msg, s) irc.reply(msg, s)
_sqlTrans = string.maketrans('*?', '%_')
def listkeys(self, irc, msg, args): def listkeys(self, irc, msg, args):
"""<glob> """<text>
Lists the keys of the factoids whose key matches the provided glob. Lists the keys of the factoids whose key contains the provided text.
""" """
glob = privmsgs.getArgs(args, needed=1) search = privmsgs.getArgs(args, needed=1)
glob = '%' + search + '%'
cursor = self.db.cursor() cursor = self.db.cursor()
cursor.execute("""SELECT key FROM factoids cursor.execute("""SELECT key FROM factoids
WHERE key LIKE %s WHERE key LIKE %s
ORDER BY key""", ORDER BY key""",
glob.translate(self._sqlTrans)) glob)
if cursor.rowcount == 0: if cursor.rowcount == 0:
irc.reply(msg, "No keys matching %r found." % glob) irc.reply(msg, "No keys matching %r found." % search)
return return
keys = [repr(tup[0]) for tup in cursor.fetchall()] keys = [repr(tup[0]) for tup in cursor.fetchall()]
s = "Key search for %r (%d found): %s" % \ s = "Key search for %r (%d found): %s" % \
(glob, len(keys), utils.commaAndify(keys)) (search, len(keys), utils.commaAndify(keys))
irc.reply(msg, s) irc.reply(msg, s)
def listvalues(self, irc, msg, args): def listvalues(self, irc, msg, args):
"""<glob> """<text>
Lists the keys of the factoids whose value matches the provided glob. Lists the keys of the factoids whose value contains the provided text.
""" """
glob = privmsgs.getArgs(args, needed=1) search = privmsgs.getArgs(args, needed=1)
glob = '%' + search + '%'
cursor = self.db.cursor() cursor = self.db.cursor()
cursor.execute("""SELECT key FROM factoids cursor.execute("""SELECT key FROM factoids
WHERE fact LIKE %s WHERE fact LIKE %s
ORDER BY key""", ORDER BY key""",
glob.translate(self._sqlTrans)) glob)
if cursor.rowcount == 0: if cursor.rowcount == 0:
irc.reply(msg, "No values matching %r found." % glob) irc.reply(msg, "No values matching %r found." % search)
return return
keys = [repr(tup[0]) for tup in cursor.fetchall()] keys = [repr(tup[0]) for tup in cursor.fetchall()]
s = "Value search for %r (%d found): %s" % \ s = "Value search for %r (%d found): %s" % \
(glob, len(keys), utils.commaAndify(keys)) (search, len(keys), utils.commaAndify(keys))
irc.reply(msg, s) irc.reply(msg, s)
def delete(self, irc, msg, args): def delete(self, irc, msg, args):
@ -574,7 +575,8 @@ class MoobotFactoids(callbacks.PrivmsgCommandAndRegexp):
"""<text> """<text>
Adds <text> as a "dunno" to be used as a random response when no Adds <text> as a "dunno" to be used as a random response when no
command or factoid key matches. command or factoid key matches. Can optionally contain '$who', which
will be replaced by the user's name when the dunno is displayed.
""" """
# Must be registered to use this # Must be registered to use this
try: try: