CanonicalNamed the toggles.

This commit is contained in:
Jeremy Fincher 2003-10-30 02:38:11 +00:00
parent 1280dbdc90
commit f4e4233704
2 changed files with 22 additions and 1 deletions

View File

@ -200,7 +200,9 @@ class ToggleDictionary(object):
if not toggles:
raise ValueError, 'At least one toggle must be provided.'
self.channels = ircutils.IrcDict()
self.defaults = toggles
self.defaults = {}
for (k, v) in toggles.iteritems():
self.defaults[callbacks.canonicalName(k)] = v
def _getDict(self, channel):
#debug.printf('_getDict(%s)' % channel)
@ -212,11 +214,13 @@ class ToggleDictionary(object):
return self.channels[channel]
def get(self, key, channel=None):
key = callbacks.canonicalName(key)
return self._getDict(channel)[key]
def toggle(self, key, value=None, channel=None):
#debug.printf('inside toggle: %s %s %s' % (key, value, channel))
d = self._getDict(channel)
key = callbacks.canonicalName(key)
if value is None:
d[key] = not d[key] # Raises KeyError, we want this.
else:

View File

@ -48,6 +48,23 @@ class ToggleDictionaryTestCase(unittest.TestCase):
self.assertEqual(t.get('foo', '#baz'), False)
#self.assertRaises(TypeError, t.toggle, 'foo', value='lak')
def testCanonicalization(self):
t = plugins.ToggleDictionary({'foo': True})
self.assertEqual(t.get('foo'), True)
self.assertEqual(t.get('fOO'), True)
self.assertEqual(t.get('Foo'), True)
self.assertEqual(t.get('-fo-o'), True)
t = plugins.ToggleDictionary({'FOO': True})
self.assertEqual(t.get('foo'), True)
self.assertEqual(t.get('fOO'), True)
self.assertEqual(t.get('Foo'), True)
self.assertEqual(t.get('-fo-o'), True)
t = plugins.ToggleDictionary({'f-o-o': True})
self.assertEqual(t.get('foo'), True)
self.assertEqual(t.get('fOO'), True)
self.assertEqual(t.get('Foo'), True)
self.assertEqual(t.get('-fo-o'), True)
def test__init__(self):
self.assertRaises(TypeError, plugins.ToggleDictionary.__init__)
self.assertRaises(ValueError, plugins.ToggleDictionary, {})