# HG changeset patch # User Thinker K.F. Li # Date 1225528524 -28800 # Node ID d4b7d8f51e9f511afb807d3e226cfedb91dc8129 # Parent 1499b0d496b68fbdaa215db18cdab151a17a288d More exactly parser for $HOME/.eagleeye.pm diff -r 1499b0d496b6 -r d4b7d8f51e9f pyikriam/lconf.py --- a/pyikriam/lconf.py Sat Nov 01 05:09:02 2008 +0800 +++ b/pyikriam/lconf.py Sat Nov 01 16:35:24 2008 +0800 @@ -1,15 +1,33 @@ -import os,string +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 = os.environ["HOME"]+'/.eagleeye.pm' - self.cd={} - if os.path.isfile(profile): - print "Loading Config file." - cfile=open(profile,'r') - for line in cfile.xreadlines(): - if line[0:3]=='$::': - con=string.split(line[3:-2]) - self.cd[con[0]]=con[2][1:-1] - else: - print "File don't exist." + 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