use datatypes in parsing of RC files, so non-string/bool values actually work

This commit is contained in:
Chris Jones 2008-05-23 13:28:56 +01:00
parent e55d78f277
commit fa448d7925
1 changed files with 21 additions and 4 deletions

View File

@ -145,12 +145,29 @@ class TerminatorConfValuestoreRC (TerminatorConfValuestore):
item = item.strip () item = item.strip ()
if item and item[0] != '#': if item and item[0] != '#':
(key, value) = self.splitter.split (item) (key, value) = self.splitter.split (item)
# Check if this is actually a key we care about
if not self.defaults.has_key (key):
raise AttributeError;
deftype = self.defaults[key].__class__.__name__
if deftype == 'bool':
if value.lower () == 'true': if value.lower () == 'true':
self.values[key] = True self.values[key] = True
elif value.lower () == 'false': elif value.lower () == 'false':
self.values[key] = False self.values[key] = False
else:
raise AttributeError
elif deftype == 'int':
self.values[key] = int (value)
elif deftype == 'float':
self.values[key] = float (value)
elif deftype == 'list':
print >> sys.stderr, _("Reading list values from .terminatorrc is not currently supported")
raise ValueError
else: else:
self.values[key] = value self.values[key] = value
dbg (" VS_RCFile: Set value '%s' to '%s'"%(key, self.values[key])) dbg (" VS_RCFile: Set value '%s' to '%s'"%(key, self.values[key]))
except Exception, e: except Exception, e:
dbg (" VS_RCFile: %s Exception handling: %s" % (type(e), item)) dbg (" VS_RCFile: %s Exception handling: %s" % (type(e), item))