Files
catalyst/simulator/config.py
T
2012-02-04 04:23:31 +00:00

43 lines
1.3 KiB
Python

import json
class Config(object):
""" Name/Value configuration object with type-safe accessors and json serialization/deserialization."""
def __init__(self, props):
self.store = props
def __setitem__(self,key,value):
self.store[key] = value
def __getitem__(self, key):
if self.store.has_key(key):
return self.store[key]
def __getattr__(self,attrname):
if self.store.has_key(attrname):
return self.store[attrname]
else:
raise AttributeError("No attribute named {name}".format(name=attrname))
def get_integer(self, name, default=0):
return self.get_value(name, default, type(1))
def get_string(self, name, default=''):
return self.get_value(name, default, type(''))
def get_float(self, name, default=0.0):
return self.get_value(name, default, type(1.0))
def get_value(self, name, default, expected_type):
if(self.store.has_key(name)):
val = self.store[name]
if isinstance(val, expected_type):
return val
else:
return default
def to_json(self):
return json.dumps(self.store)
def from_json(self, json_string):
self.store = json.loads(json_string)