diff --git a/src/conf.py b/src/conf.py index 3239af684..5482e3aff 100644 --- a/src/conf.py +++ b/src/conf.py @@ -424,9 +424,6 @@ length of time a driver should block waiting for input.""")) class ValidDriverModule(registry.OnlySomeStrings): validStrings = ('socketDrivers', 'twistedDrivers', 'asyncoreDrivers') - def normalize(self, s): - # We can't be case insensitive here. At least not without work. - return s supybot.drivers.register('module', ValidDriverModule('socketDrivers', """ Determines what driver module the bot will use. socketDrivers, a simple diff --git a/src/registry.py b/src/registry.py index 06b18e0b5..3c78a555f 100644 --- a/src/registry.py +++ b/src/registry.py @@ -297,13 +297,21 @@ class String(Value): raise InvalidRegistryValue, '%r is not a string.' % s class OnlySomeStrings(String): - normalize = staticmethod(str.lower) validStrings = () def __init__(self, *args, **kwargs): assert self.validStrings, 'There must be some valid strings. ' \ 'This is a bug.' String.__init__(self, *args, **kwargs) + def normalize(self, s): + lowered = s.lower() + L = list(map(str.lower, self.validStrings)) + try: + i = L.index(lowered) + except ValueError: + return s # This is handled in setValue. + return self.validStrings[i] + def setValue(self, s): s = self.normalize(s) if s in self.validStrings: