diff --git a/__init__.py b/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/document.py b/document.py new file mode 100644 index 0000000000000000000000000000000000000000..cabf2524bd066342469b3fdef3a13ef7b6d03aa5 --- /dev/null +++ b/document.py @@ -0,0 +1,36 @@ +class Document: + def __init__(self) -> None: + self.name = "" + self.title = "" + self.main_content = "" + self.attributes = {} + + def __repr__(self) -> str: + return f"" + + def set_name(self, name): + self.name = name + + def set_title(self, title): + self.title = title + + def set_main_content(self, main_content): + self.main_content = main_content + + def set_attributes(self, attributes): + self.attributes = attributes + + def set_attribute(self, key, value): + self.attributes[key] = value + + def get_name(self): + return self.name + + def get_title(self): + return self.title + + def get_main_content(self): + return self.main_content + + def get_attributes(self): + return self.attributes diff --git a/document_writer.py b/document_writer.py new file mode 100644 index 0000000000000000000000000000000000000000..05192b0e03fef541514cfaaadeebc300501a8b72 --- /dev/null +++ b/document_writer.py @@ -0,0 +1,22 @@ +import os +import json +from document import Document + +class DocumentWriter(): + def __init__(self, target_directory) -> None: + self.target = target_directory + os.makedirs(self.target, exist_ok=True) + os.makedirs(os.path.join(self.target, ".meta"), exist_ok=True) + + def write_document(self, document: Document) -> None: + main_file_name = os.path.join(self.target, document.get_name()) + with open(main_file_name, "w") as f: + f.write(document.get_main_content()) + + meta_file_name = os.path.join(self.target, ".meta", document.get_name() + ".json") + with open(meta_file_name, "w") as f: + f.write(json.dumps({ + "title": document.get_title(), + "backlink": main_file_name, + "properties": document.get_attributes() + })) diff --git a/test/__init__.py b/test/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/test/test_document_writer.py b/test/test_document_writer.py new file mode 100644 index 0000000000000000000000000000000000000000..0424d8f85bfbc4003df807ed94bfeda54d0a4263 --- /dev/null +++ b/test/test_document_writer.py @@ -0,0 +1,30 @@ +import os +import json +from document_writer import DocumentWriter +from document import Document + +def test_document_writer(tmp_path): + content = """beep +boop +bop +bim""" + name = "test.txt" + title = "hello !" + creation_date = 1761763703219 + + test_document = Document() + test_document.set_name(name) + test_document.set_title(title) + test_document.set_main_content(content) + test_document.set_attribute("creation_date", creation_date) + + writer = DocumentWriter(tmp_path) + writer.write_document(test_document) + with open(os.path.join(tmp_path, name)) as f: + assert f.read() == content + with open(os.path.join(tmp_path, ".meta", name + ".json")) as f: + meta = json.loads(f.read()) + assert meta["title"] == title + assert meta["backlink"] == os.path.join(tmp_path, name) + assert meta["properties"] != None + assert meta["properties"]["creation_date"] == 1761763703219