view pyikriam/lconf.py @ 188:bf4ddf5bffb9

Extracts information about resources required to upgrade a building.
author Thinker K.F. Li <thinker@branda.to>
date Sun, 02 Nov 2008 22:31:06 +0800
parents d4b7d8f51e9f
children
line wrap: on
line source

import os, string
import re

_user_home = os.environ['HOME']
dfl_profile = os.path.join(_user_home, '.eagleeye.pm')
_reo_assign = re.compile('^\\$::([_a-zA-Z][_a-zA-Z0-9]+) *= *([\'"][^"]*[\'"]).*$')

def _real_load_conf(conf_o):
    confs = [_reo_assign.match(line)
             for line in conf_o
             if line.startswith('$::')]
    cd = dict([(mo.group(1), eval(mo.group(2)))
               for mo in confs if mo])
    return cd

class LoadConfigfile(object):
    def __init__(self, profile=dfl_profile):
        prof_o = open(profile, 'r')
        self.cd = _real_load_conf(prof_o)
        pass
    pass

if __name__ == '__main__':
    from StringIO import StringIO
    conf = '''
$::user = "alsfjsf"; #lsfjslf
$::server = "fkljalfasf"; # sfjslf
$::pass = "lsfjslfsf";
'''
    conf_o = StringIO(conf)
    cd = _real_load_conf(conf_o)
    print cd
    pass