aboutsummaryrefslogtreecommitdiff
path: root/util/Config.py
diff options
context:
space:
mode:
Diffstat (limited to 'util/Config.py')
-rw-r--r--util/Config.py10
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)