|
@@ -0,0 +1,60 @@
|
|
|
+import json
|
|
|
+import re
|
|
|
+import sys
|
|
|
+import os
|
|
|
+
|
|
|
+#first pass
|
|
|
+def convert(fo):
|
|
|
+
|
|
|
+ if not isinstance(fo,dict):
|
|
|
+ return fo
|
|
|
+
|
|
|
+ #convert core variables
|
|
|
+ if 'setVariables' in fo:
|
|
|
+ for v in fo['setVariables']:
|
|
|
+ if fo[v].find('__home__')>-1:
|
|
|
+ fo[v]=re.sub('__home__',os.path.expanduser('~'),fo[v])
|
|
|
+ #descend
|
|
|
+ for c in fo:
|
|
|
+ if c=='setVariables':
|
|
|
+ continue
|
|
|
+ if isinstance(fo[c],dict):
|
|
|
+ fo[c]=convert(fo[c])
|
|
|
+ continue
|
|
|
+ if isinstance(fo[c],list):
|
|
|
+ fo[c]=[convert(x) for x in fo[c]]
|
|
|
+ continue
|
|
|
+ return fo
|
|
|
+
|
|
|
+def convertValues(pars):
|
|
|
+ replacements={v:pars[v] for v in pars['setVariables']}
|
|
|
+ return convertValuesR(pars,replacements)
|
|
|
+
|
|
|
+def convertValuesR(pars,replacements):
|
|
|
+
|
|
|
+ #dict
|
|
|
+ if isinstance(pars,dict):
|
|
|
+ for c in pars:
|
|
|
+ if c=='setVariables':
|
|
|
+ continue
|
|
|
+ if c in replacements:
|
|
|
+ continue
|
|
|
+ if isinstance(pars[c],dict):
|
|
|
+ pars[c]=convertValuesR(pars[c],replacements)
|
|
|
+ continue
|
|
|
+ if isinstance(pars[c],list):
|
|
|
+ pars[c]=[convertValuesR(x,replacements) for x in pars[c]]
|
|
|
+ continue
|
|
|
+ for r in replacements:
|
|
|
+ pars[c]=re.sub(r,replacements[r],pars[c])
|
|
|
+ return pars
|
|
|
+
|
|
|
+ #list
|
|
|
+ if isinstance(pars,list):
|
|
|
+ return [convertValuesR(x,replacements) for x in pars]
|
|
|
+
|
|
|
+ #value/leaf
|
|
|
+ for r in replacements:
|
|
|
+ pars=re.sub(r,replacements[r],pars)
|
|
|
+ return pars
|
|
|
+
|