def walk_resource()

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