71 lines
2.0 KiB
Python
71 lines
2.0 KiB
Python
#!/usr/bin/env python
|
|
|
|
##\file
|
|
# This file defines the Config class. The config class
|
|
# is used to read data from the model configuration
|
|
# file and present the information in a format that
|
|
# that is easy to use.
|
|
|
|
# STD Python modules
|
|
import exceptions
|
|
import re
|
|
import sys
|
|
|
|
class Config(dict):
|
|
def __init__(self):
|
|
dict.__init__(self)
|
|
|
|
def config(self, argv):
|
|
filename = ''
|
|
if type(argv) == str:
|
|
filename = argv
|
|
elif type(argv) == list:
|
|
if len(argv) != 2:
|
|
errorString = 'Config: Error: There should be exactly one commandline argument, the name of the config file.'
|
|
raise exceptions.RuntimeError(errorString)
|
|
|
|
filename = argv[1]
|
|
else:
|
|
errorString = 'Config: Error: unknown type passed to Config.'
|
|
raise exceptions.RuntimeError(errorString)
|
|
|
|
|
|
try:
|
|
strm = open(filename, 'r')
|
|
except exceptions.IOError as error:
|
|
errorString = 'Config: Error: could not open configuration file named ' + filename
|
|
raise exceptions.RuntimeError(errorString)
|
|
|
|
for line in strm:
|
|
line = re.sub(r'//.*', '', line )
|
|
line = re.sub(r'\n' , '', line )
|
|
|
|
while re.search(r'\\\\$', line) != None:
|
|
contLine = strm.readline()
|
|
contLine = re.sub(r'//.*', contLine)
|
|
line = re.sub(r'\\\\$', contLine, line)
|
|
|
|
line = re.sub(r'\t', '', line)
|
|
line = re.sub(r' ', '', line)
|
|
|
|
if len(line) == 0:
|
|
continue
|
|
|
|
key, value = line.split('=')
|
|
dict.__setitem__(self, key, value)
|
|
|
|
strm.close()
|
|
|
|
if dict.has_key(self, 'XFile'):
|
|
print 'Params: Msg: XFile requested. You don\'t have clearance.'
|
|
|
|
return
|
|
|
|
|
|
def __str__(self):
|
|
ret = ''
|
|
for (key,value) in self.iteritems():
|
|
ret += str(key) + ' = ' + str(value) + '\n'
|
|
return ret
|
|
|