diff --git a/plugins/Factoids.py b/plugins/Factoids.py
index f0127bb05..75ab9a80e 100644
--- a/plugins/Factoids.py
+++ b/plugins/Factoids.py
@@ -49,8 +49,10 @@ import utils
import ircdb
import ircutils
import privmsgs
+import registry
import callbacks
-import configurable
+
+import Owner
try:
import sqlite
@@ -58,27 +60,26 @@ except ImportError:
raise callbacks.Error, 'You need to have PySQLite installed to use this ' \
'plugin. Download it at '
-class Factoids(plugins.ChannelDBHandler,
- callbacks.Privmsg,
- configurable.Mixin):
- configurables = configurable.Dictionary(
- [('learn-separator', configurable.NoSpacesStrType, 'as',
- """Determines what separator must be used in the learn command.
- Defaults to 'as' -- learn as . Users might feel more
- comfortable with 'is' or something else, so it's configurable."""),
- ('show-factoid-if-only-one-match', configurable.BoolType, True,
- """Determines whether the bot will reply with the single matching
- factoid if only one factoid matches when using the search command.
- """),]
- )
+
+conf.registerPlugin('Factoids')
+
+conf.registerChannelValue(conf.supybot.plugins.Factoids, 'learnSeparator',
+ registry.String('as', """Determines what separator must be used in the
+ learn command. Defaults to 'as' -- learn as . Users might
+ feel more comfortable with 'is' or something else, so it's
+ configurable."""))
+conf.registerChannelValue(conf.supybot.plugins.Factoids,
+ 'showFactoidIfOnlyOneMatch', registry.Boolean(True, """Determines whether
+ the bot will reply with the single matching factoid if only one factoid
+ matches when using the search command."""))
+
+class Factoids(plugins.ChannelDBHandler, callbacks.Privmsg):
def __init__(self):
callbacks.Privmsg.__init__(self)
- configurable.Mixin.__init__(self)
plugins.ChannelDBHandler.__init__(self)
def die(self):
callbacks.Privmsg.die(self)
- configurable.Mixin.die(self)
plugins.ChannelDBHandler.die(self)
def makeDb(self, filename):
@@ -117,7 +118,8 @@ class Factoids(plugins.ChannelDBHandler,
"""
channel = privmsgs.getChannel(msg, args)
try:
- separator = self.configurables.get('learn-separator', channel)
+ separator = conf.supybot.plugins.Factoids. \
+ learnSeparator.get(channel)()
i = args.index(separator)
except ValueError:
raise callbacks.ArgumentError
@@ -405,7 +407,7 @@ class Factoids(plugins.ChannelDBHandler,
if cursor.rowcount == 0:
irc.reply('No keys matched that query.')
elif cursor.rowcount == 1 and \
- self.configurables.get('show-factoid-if-only-one-match',channel):
+ conf.supybot.plugins.Factoids.showFactoidIfOnlyOneMatch.get(channel)():
self.whatis(irc, msg, [cursor.fetchone()[0]])
elif cursor.rowcount > 100:
irc.reply('More than 100 keys matched that query; '
diff --git a/test/test_Factoids.py b/test/test_Factoids.py
index dbd3e7465..ee91dba9b 100644
--- a/test/test_Factoids.py
+++ b/test/test_Factoids.py
@@ -121,21 +121,28 @@ if sqlite is not None:
self.assertNotError('learn foo as bar')
self.assertNotRegexp('info foo', '2 factoids')
- def testConfigurable(self):
+ def testLearnSeparator(self):
self.assertError('learn foo is bar')
self.assertNotError('learn foo as bar')
self.assertRegexp('whatis foo', 'bar')
- self.assertNotError('factoids config learn-separator is')
- self.assertError('learn bar as baz')
- self.assertNotError('learn bar is baz')
- self.assertRegexp('whatis bar', 'baz')
+ try:
+ conf.supybot.plugins.Factoids.learnSeparator.setValue('is')
+ self.assertError('learn bar as baz')
+ self.assertNotError('learn bar is baz')
+ self.assertRegexp('whatis bar', 'baz')
+ finally:
+ conf.supybot.plugins.Factoids.learnSeparator.setValue('as')
- # show-factoid-if-only-one-match
+ def testShowFactoidIfOnlyOneMatch(self):
m1 = self.assertNotError('factoids search m/foo|bar/')
- q = 'factoids config show-factoid-if-only-one-match Off'
- self.assertNotError(q)
- m2 = self.assertNotError('factoids search m/foo/')
- self.failUnless(m1.args[1].startswith(m2.args[1]))
+ try:
+ conf.supybot.plugins.Factoids. \
+ showFactoidIfOnlyOneMatch.setValue(False)
+ m2 = self.assertNotError('factoids search m/foo/')
+ self.failUnless(m1.args[1].startswith(m2.args[1]))
+ finally:
+ conf.supybot.plugins.Factoids. \
+ showFactoidIfOnlyOneMatch.setValue(True)
# vim:set shiftwidth=4 tabstop=8 expandtab textwidth=78: