in aws/services/CloudFormation/MacrosExamples/Explode/lambda/explode.py [0:0]
def walk_resource(resource, map_data):
"""Recursively process a resource."""
if isinstance(resource, dict):
new_resource = {}
for key, value in resource.items():
if isinstance(value, (dict, list)):
new_resource[key] = walk_resource(value, map_data)
elif isinstance(value, str):
new_resource[key] = replace_explode_in_string(value, map_data)
else:
new_resource[key] = value
elif isinstance(resource, list):
new_resource = []
for value in resource:
if isinstance(value, (dict, list)):
new_resource.append(walk_resource(value, map_data))
elif isinstance(value, str):
new_resource.append(replace_explode_in_string(value, map_data))
else:
new_resource.append(value)
else:
# if the resource is of type string
new_resource = replace_explode_in_string(resource, map_data)
return new_resource