mirror of
https://github.com/RGBCube/JsonWrapper
synced 2025-07-27 11:47:45 +00:00
pathmagic
This commit is contained in:
parent
fd3dd63136
commit
ee145f449b
1 changed files with 21 additions and 3 deletions
24
db.py
24
db.py
|
@ -13,6 +13,21 @@ class Utils:
|
|||
with open(path_to_json, "w") as json_file:
|
||||
json.dump({}, json_file)
|
||||
|
||||
def path_magic(self, main_dict: dict, path: str, *, key: str, value):
|
||||
def magic(alt_dict: dict, key: str):
|
||||
if key in alt_dict.keys():
|
||||
return alt_dict
|
||||
else:
|
||||
alt_dict[key] = {}
|
||||
return alt_dict
|
||||
exec_str = "main_dict"
|
||||
for dict_name in path.split("+"):
|
||||
exec_str = f"magic({exec_str}, '{dict_name}')['{dict_name}']"
|
||||
if path.index(dict_name) == len(path) - 1:
|
||||
exec_str = f"{exec_str}['{key}'] = {value}"
|
||||
exec(exec_str)
|
||||
return main_dict
|
||||
|
||||
class ClutterDB:
|
||||
|
||||
def __init__(self, path_to_json: str):
|
||||
|
@ -20,13 +35,16 @@ class ClutterDB:
|
|||
self.utils = Utils()
|
||||
self.utils.validate_json(path_to_json)
|
||||
|
||||
def set(self, key: str, value):
|
||||
def set(self, key: str, value, *, pathmagic=""):
|
||||
self.utils.validate_json(self.path_to_json)
|
||||
with open(self.path_to_json, mode="r") as json_file:
|
||||
json_data = json.load(json_file)
|
||||
with open(self.path_to_json, mode="w") as json_file:
|
||||
json_data[key] = value
|
||||
json.dump(json_data, json_file, indent=4)
|
||||
if pathmagic == "":
|
||||
json_data[key] = value
|
||||
json.dump(json_data, json_file, indent=4)
|
||||
else:
|
||||
json.dump(self.utils.path_magic(json_data, pathmagic, key=key, value=value), json_file, indent=4)
|
||||
|
||||
def get(self, key: str, *, default=None):
|
||||
self.utils.validate_json(self.path_to_json)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue