Added RFE #802856, so regexps aren't required by searchfactoids.

This commit is contained in:
Jeremy Fincher 2003-09-09 08:41:16 +00:00
parent 073040d92e
commit 949deee935
2 changed files with 12 additions and 4 deletions

View File

@ -327,9 +327,11 @@ class Factoids(ChannelDBHandler, callbacks.Privmsg):
_sqlTrans = string.maketrans('*?', '%_') _sqlTrans = string.maketrans('*?', '%_')
def searchfactoids(self, irc, msg, args): def searchfactoids(self, irc, msg, args):
"""[<channel>] <regexp> """[<channel>] <regexp|string>
Searches the keyspace for keys matching <regexp>. Searches the keyspace for keys matching <regexp>. If <regexp|string>
isn't a regexp (i.e, it's not of the form m/foo/ or /bar/) then the
literal string is searched for.
""" """
channel = privmsgs.getChannel(msg, args) channel = privmsgs.getChannel(msg, args)
regexp = privmsgs.getArgs(args) regexp = privmsgs.getArgs(args)
@ -338,6 +340,10 @@ class Factoids(ChannelDBHandler, callbacks.Privmsg):
def p(s): def p(s):
return int(bool(r.search(s))) return int(bool(r.search(s)))
except ValueError, e: except ValueError, e:
if not regexp.startswith('m/') or regexp[0] == '/' == regexp[-1]:
def p(s):
return int(regexp in s)
else:
irc.error(msg, 'Invalid regular expression.') irc.error(msg, 'Invalid regular expression.')
return return
db = self.getDb(channel) db = self.getDb(channel)

View File

@ -76,6 +76,8 @@ class FactoidsTestCase(ChannelPluginTestCase, PluginDocumentation):
self.assertRegexp('searchfactoids /^.+i/', 'jemfinch.*strike') self.assertRegexp('searchfactoids /^.+i/', 'jemfinch.*strike')
self.assertNotRegexp('searchfactoids /^.+i/', 'inkedmn') self.assertNotRegexp('searchfactoids /^.+i/', 'inkedmn')
self.assertRegexp('searchfactoids /^j/', 'jemfinch.*jamessan') self.assertRegexp('searchfactoids /^j/', 'jemfinch.*jamessan')
self.assertRegexp('searchfactoids ke',
'inkedmn.*strike|strike.*inkedmn')
# vim:set shiftwidth=4 tabstop=8 expandtab textwidth=78: # vim:set shiftwidth=4 tabstop=8 expandtab textwidth=78: