diff --git a/src/plugins.py b/src/plugins.py index d62493d11..811d15f21 100644 --- a/src/plugins.py +++ b/src/plugins.py @@ -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: diff --git a/test/test_plugins.py b/test/test_plugins.py index 347d3aeb0..407b60ff6 100644 --- a/test/test_plugins.py +++ b/test/test_plugins.py @@ -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, {})