12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- import json
- import re
- import sys
- import os
- def convert(fo,setup=None):
-
-
-
- if not isinstance(fo,dict):
- return fo
- if 'setVariables' in fo:
- for v in fo['setVariables']:
- fo[v]=replacePattern(fo[v],setup)
-
- 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 replacePattern(v,setup=None):
- print('Replacing v={}'.format(v))
-
- if v.find('__home__')>-1:
- x=re.sub(r'__home__',os.path.expanduser('~'),v)
- print('Matching home {}->{}'.format(v,x))
- return x
- if v.find('__[env]home__')>-1:
- x=re.sub(r'__\[env\]home__',os.path.expanduser('~'),v)
- print('Matching home {}->{}'.format(v,x))
- return x
-
-
-
- if not setup:
- return v
-
- pattern=r'__\[setup:([^\]]*)\](.*)(?=__)__'
- m=re.findall(pattern,v)
- print(m)
- if len(m)==1:
- g=m[0]
- return re.sub(pattern,setup[g[0]][g[1]],v)
- return v
- def convertValues(pars):
- replacements={v:pars[v] for v in pars['setVariables']}
- return convertValuesR(pars,replacements)
- def convertValuesR(pars,replacements):
-
- 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
-
- if isinstance(pars,list):
- return [convertValuesR(x,replacements) for x in pars]
-
- for r in replacements:
- pars=re.sub(r,replacements[r],pars)
- return pars
|