diff --git a/data_file.py b/data_file.py index 6009b5a..320bcff 100644 --- a/data_file.py +++ b/data_file.py @@ -113,9 +113,14 @@ class DataclassJSONFile: # these 2 functions do the exact same thing as the functions in the class above -def load_dataclass_json(dataclass, file_path: str): +def load_dataclass_json(dataclass, file_path: str, builtin_save: bool=True): """ Loads a dataclass instance from a json file. + + :param dataclass: The dataclass from which the instance will be created. + :param str file_path: The path to the json file from which the data gets loaded. + :param bool builtin_save: If True, you can simply call instance.save(file_path) to store the data. + :return: An instance of the dataclass containing the data from the json file. """ if os.path.exists(file_path): file = open(file_path, "r") @@ -125,15 +130,23 @@ def load_dataclass_json(dataclass, file_path: str): else: class_dict = {} - return dataclass(**class_dict) + instance = dataclass(**class_dict) + + if builtin_save: + dataclass.save = save_dataclass_json + + return instance def save_dataclass_json(class_instance, file_path: str): """ Saves a dataclass instance to a json file. + :param class_instance: The instance of the dataclass to be saved. + :param str file_path: The path to the file in which the data gets written. """ + class_dict = class_instance.__dict__ - class_dict = dict(filter(lambda pair: not callable(pair[1]), class_dict.items())) + class_dict = dict(filter(lambda pair: not callable(pair[1]), class_dict.items())) # filter out functions file = open(file_path, "w") json.dump(class_dict, file) diff --git a/text.py b/text.py index 05b8f09..f83a980 100644 --- a/text.py +++ b/text.py @@ -114,6 +114,7 @@ def rsap(old: str, replace: str, position: int): def find_nth_occurrence(string: str, substring: str, n: int): """ Find the nth occurrence of a substring in a string. + :param int n: 0 is the first occurrence :return: -1 when the substring was not found, 0 is the first character. """