From ed3ed60dc78fa8a9006f69db8d3d71ab5f3b548f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?No=C3=A9=20Lopez?= Date: Wed, 29 Oct 2025 19:40:36 +0100 Subject: [PATCH 1/3] Add layout for pytest --- __init__.py | 0 test/__init__.py | 0 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 __init__.py create mode 100644 test/__init__.py diff --git a/__init__.py b/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/test/__init__.py b/test/__init__.py new file mode 100644 index 0000000..e69de29 -- GitLab From 2648491a40150e067752f7a0260bfabd478f34ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?No=C3=A9=20Lopez?= Date: Wed, 29 Oct 2025 19:54:16 +0100 Subject: [PATCH 2/3] Add Document class --- document.py | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 document.py diff --git a/document.py b/document.py new file mode 100644 index 0000000..cabf252 --- /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 -- GitLab From 6fa89a1ef3465caaf539f8b40857854ba050ddce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?No=C3=A9=20Lopez?= Date: Wed, 29 Oct 2025 19:54:25 +0100 Subject: [PATCH 3/3] Add DocumentWriter class --- document_writer.py | 22 ++++++++++++++++++++++ test/test_document_writer.py | 30 ++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 document_writer.py create mode 100644 test/test_document_writer.py diff --git a/document_writer.py b/document_writer.py new file mode 100644 index 0000000..05192b0 --- /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/test_document_writer.py b/test/test_document_writer.py new file mode 100644 index 0000000..0424d8f --- /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 -- GitLab