aboutsummaryrefslogtreecommitdiff
path: root/uzbekdb/database.py
diff options
context:
space:
mode:
Diffstat (limited to 'uzbekdb/database.py')
-rw-r--r--uzbekdb/database.py56
1 files changed, 56 insertions, 0 deletions
diff --git a/uzbekdb/database.py b/uzbekdb/database.py
new file mode 100644
index 0000000..f27d107
--- /dev/null
+++ b/uzbekdb/database.py
@@ -0,0 +1,56 @@
+"""
+ UzbekDB database
+"""
+
+def _is_correct(dbstr: str):
+ try:
+ db = [x for x in dbstr.split("\n") if x]
+ except Exception:
+ return False
+ if len(db) == 0:
+ return False
+ else:
+ return True
+
+def _is_multiline(dbstr: str):
+ if _is_correct(dbstr):
+ db = [x for x in dbstr.split("\n") if x]
+ if len(db) == 1:
+ return False
+ else:
+ return True
+
+def _return_correct_type(s):
+ for t in (int, float, complex):
+ try:
+ return t(s)
+ except ValueError:
+ continue
+ return s
+
+def loads(dbstr: str):
+ if _is_correct(dbstr):
+ db = [x for x in dbstr.split("\n") if x]
+ multiline = _is_multiline(dbstr)
+ if multiline:
+ dbobj = {}
+ for i in db:
+ dbel = i.split(" | ")
+ dbelc = []
+ for i in dbel:
+ dbelc.append(_return_correct_type(i))
+ dbobj[dbelc[0]] = dbelc[1:]
+ else:
+ dbobj = []
+ for i in db[0].split(" | "):
+ dbobj.append(_return_correct_type(i))
+ return dbobj
+
+def dumps(dbobj):
+ dbstr = ""
+ if isinstance(dbobj, dict):
+ for k,v in dbobj.items():
+ dbstr = dbstr + f"{k} | {' | '.join(map(str, v))}\n"
+ elif isinstance(dbobj, list):
+ dbstr = " | ".join(map(str, dbobj))
+ return dbstr