From 3538dee7c9bc6e5060b10ba5391de35f1ce0e92f Mon Sep 17 00:00:00 2001 From: Jeremy Fincher Date: Thu, 8 Apr 2004 11:13:03 +0000 Subject: [PATCH] Ah, a better way to do default normalization. --- src/conf.py | 3 --- src/registry.py | 10 +++++++++- 2 files changed, 9 insertions(+), 4 deletions(-) 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: