changeset 158:d4b7d8f51e9f

More exactly parser for $HOME/.eagleeye.pm
author Thinker K.F. Li <thinker@branda.to>
date Sat, 01 Nov 2008 16:35:24 +0800
parents 1499b0d496b6
children e2956846ee98
files pyikriam/lconf.py
diffstat 1 files changed, 31 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- 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