def clear_non_filled_parameters()

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


def clear_non_filled_parameters(ldm):
    def clear_list(lst):
        for i in range(len(lst) - 1, -1, -1):
            list_val = lst[i]
            if type(list_val) is dict:
                clear_dict(list_val)
            elif type(list_val) is list:
                clear_list(list_val)
            elif type(list_val) is str:
                parameter_start_index = list_val.find(parameter_start_delimiter)
                parameter_end_index = list_val.find(parameter_end_delimiter)
                if parameter_start_index >= 0 and parameter_end_index >= 0:
                    # delete it
                    del lst[i]

        # remove extra empty item in list
        def is_item_empty(item):
            item_is_empty = True
            if type(item) is dict:
                for key, val in item.items():
                    if not is_item_empty(val):
                        item_is_empty = False
                        break
            elif type(item) is list:
                for val in item:
                    if not is_item_empty(val):
                        item_is_empty = False
                        break
            else:
                item_is_empty = False
            return item_is_empty

        # remove extra empty item in list
        for i in range(len(lst) - 1, -1, -1):
            if is_item_empty(lst[i]):
                    del lst[i]

    def clear_dict(d):
        to_be_deleted = []
        for key, val in d.items():
            if type(val) is dict:
                clear_dict(val)
                if len(val) == 0:
                    # delete it
                    to_be_deleted.append(key)
            elif type(val) is list:
                clear_list(val)
                if len(val) == 0:
                    # delete it
                    to_be_deleted.append(key)
            elif type(val) is str:
                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:
                    # delete it
                    to_be_deleted.append(key)
        for del_key in to_be_deleted:
            del d[del_key]

    clear_dict(ldm)