correctly read config

This commit is contained in:
Romain Bignon 2010-03-08 17:44:03 +01:00
commit f100a8d8c5

View file

@ -30,26 +30,39 @@ class Config:
self.values = {} self.values = {}
def load(self): def load(self):
try:
with open(self.path, 'r') as f: with open(self.path, 'r') as f:
self.values = yaml.load(f) self.values = yaml.load(f)
except IOError:
pass
if self.values is None:
self.values = {}
def get(self, *args, **kwargs): def get(self, *args, **kwargs):
create = False default = None
if 'create' in kwargs: if 'default' in kwargs:
create = kwargs['create'] default = kwargs['default']
v = self.values v = self.values
for a in args: for a in args[:-1]:
try: try:
v = v[a] v = v[a]
except KeyError: except KeyError:
if create: if not default is None:
v = v[a] = {} v[a] = {}
v = v[a]
else: else:
raise ConfigError() raise ConfigError()
except TypeError: except TypeError:
raise ConfigError() raise ConfigError()
try:
v = v[args[-1]]
except KeyError:
v[args[-1]] = default
v = v[args[-1]]
return v return v
def set(self, *args): def set(self, *args):
@ -58,7 +71,8 @@ class Config:
try: try:
v = v[a] v = v[a]
except KeyError: except KeyError:
v = v[a] = {} v[a] = {}
v = v[a]
except TypeError: except TypeError:
raise ConfigError() raise ConfigError()