more air
This commit is contained in:
@ -1,5 +1,6 @@
|
|||||||
def replace(s, d):
|
def replace(s, d):
|
||||||
from re import findall
|
from re import findall
|
||||||
|
|
||||||
if isinstance(s, str):
|
if isinstance(s, str):
|
||||||
for var in findall(r"%\(([A-Za-z0-9_]*)\)", s):
|
for var in findall(r"%\(([A-Za-z0-9_]*)\)", s):
|
||||||
s = s.replace("%({})".format(var), str(d[var]))
|
s = s.replace("%({})".format(var), str(d[var]))
|
||||||
@ -14,6 +15,7 @@ def test_replace():
|
|||||||
def interpolate(d, d_map):
|
def interpolate(d, d_map):
|
||||||
from collections import Mapping, Iterable
|
from collections import Mapping, Iterable
|
||||||
from copy import copy
|
from copy import copy
|
||||||
|
|
||||||
for k, v in d.items():
|
for k, v in d.items():
|
||||||
if isinstance(v, Mapping):
|
if isinstance(v, Mapping):
|
||||||
d[k] = interpolate(d[k], d_map)
|
d[k] = interpolate(d[k], d_map)
|
||||||
@ -31,17 +33,22 @@ def interpolate(d, d_map):
|
|||||||
|
|
||||||
|
|
||||||
def test_interpolate():
|
def test_interpolate():
|
||||||
|
|
||||||
d = {'foo': 'hey',
|
d = {'foo': 'hey',
|
||||||
'bar': 'ho',
|
'bar': 'ho',
|
||||||
'one': 'hey %(foo) ho %(bar)',
|
'one': 'hey %(foo) ho %(bar)',
|
||||||
'two': {'one': 'hey %(foo) ho %(bar)',
|
'two': {'one': 'hey %(foo) ho %(bar)',
|
||||||
'two': 'raboof'}}
|
'two': 'raboof'}}
|
||||||
|
|
||||||
d_interpolated = {'foo': 'hey',
|
d_interpolated = {'foo': 'hey',
|
||||||
'bar': 'ho',
|
'bar': 'ho',
|
||||||
'one': 'hey hey ho ho',
|
'one': 'hey hey ho ho',
|
||||||
'two': {'one': 'hey hey ho ho',
|
'two': {'one': 'hey hey ho ho',
|
||||||
'two': 'raboof'}}
|
'two': 'raboof'}}
|
||||||
|
|
||||||
assert interpolate(d, d) == d_interpolated
|
assert interpolate(d, d) == d_interpolated
|
||||||
|
|
||||||
d2 = {'modules': [{'fc': [{'source': '%(url_root)fc_optional.cmake'}]}], 'url_root': 'downloaded/downloaded_'}
|
d2 = {'modules': [{'fc': [{'source': '%(url_root)fc_optional.cmake'}]}], 'url_root': 'downloaded/downloaded_'}
|
||||||
d2_interpolated = {'modules': [{'fc': [{'source': 'downloaded/downloaded_fc_optional.cmake'}]}], 'url_root': 'downloaded/downloaded_'}
|
d2_interpolated = {'modules': [{'fc': [{'source': 'downloaded/downloaded_fc_optional.cmake'}]}], 'url_root': 'downloaded/downloaded_'}
|
||||||
|
|
||||||
assert interpolate(d2, d2) == d2_interpolated
|
assert interpolate(d2, d2) == d2_interpolated
|
||||||
|
Reference in New Issue
Block a user