def parse_template_parameters()

in src/loading_manifest/csv_to_json.py [0:0]


def parse_template_parameters(root_object, parameters_object):
    def parse_str(root_object, keys, val, root_list, parameters_object):
        val = val.strip()
        parameter_start_index = val.find(parameter_start_delimiter)
        parameter_end_index = val.find(parameter_end_delimiter)
        if parameter_start_index >= 0 and parameter_end_index >= 0:
            parameter = val[parameter_start_index:parameter_end_index + len(parameter_end_delimiter)]
            if len(parameter) > 0:
                parameter_recs = parameters_object.get(parameter)
                if parameter_recs is None:
                    parameter_recs = []
                    parameters_object[parameter] = parameter_recs
                parameter_recs.append((root_object, keys, root_list))
            val_left = val[parameter_end_index + len(parameter_end_delimiter):]
            if len(val_left) > 0:
                parse_str(root_object, keys, val_left, root_list, parameters_object)

    def parse_dict(parent_object, root_object, keys, root_list, parameters_object):
        for key, val in parent_object.items():
            new_keys = list(keys)
            new_keys.append(key)
            if type(val) is dict:
                parse_dict(val, root_object, new_keys, root_list, parameters_object)

            if type(val) is list:
                if len(val) == 1:
                    new_root_list = list(root_list)
                    new_root_list.append((root_object, new_keys))
                    new_root_object = {0: val[0]}
                    parse_dict(new_root_object, new_root_object, [], new_root_list, parameters_object)

            if type(val) is str:
                f_root_list = list(root_list)
                parse_str(root_object, new_keys, val, f_root_list, parameters_object)

    parse_dict(root_object, root_object, [], [], parameters_object)