diff options
author | rcoh <rcoh@mit.edu> | 2011-02-08 18:47:17 -0500 |
---|---|---|
committer | rcoh <rcoh@mit.edu> | 2011-02-08 18:47:17 -0500 |
commit | 03d08792f437e1ce93dc0cbfa997025029c8e74e (patch) | |
tree | 0f4b5a63317bc582c2ab760b7339a709b7445afb /util/Config.py | |
parent | 9cf7747d70032cee28f29f9707360544a0e63277 (diff) | |
parent | 06c639db6b98affab4abf07e57a90e2fcb5402ef (diff) |
Merge branch 'configimprovements' into objprops
Diffstat (limited to 'util/Config.py')
-rw-r--r-- | util/Config.py | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/util/Config.py b/util/Config.py index 6fdb0d4..4153313 100644 --- a/util/Config.py +++ b/util/Config.py @@ -1,4 +1,5 @@ from xml.etree.ElementTree import * +import re import sys import xml import pdb @@ -113,6 +114,15 @@ def pullArgsFromItem(parentNode): def attemptEval(val): try: + if '${' in val and '}$' in val: #TODO: this could be a little cleaner + dictVal = re.sub("'\$\{(.+)\}\$'", "b['\\1']", val) #replace all expressions like {blah} with a['blah'] + dictVal = re.sub("\$\{(.+)\}\$", "a['\\1']", dictVal) #replace all expressions like {blah} with a['blah'] + if "'${" and "}$'" in val: #nested lambda madness + lambdaVal = eval('lambda a: lambda b: ' + dictVal) + else: + lambdaVal = eval('lambda a:'+dictVal) #TODO: nested lambdas + return lambdaVal #convert referential objects to lambda expressions which resolve + #dynamically val = eval(val) except (NameError, SyntaxError): val = str(val) |