diff --git a/.gitignore b/.gitignore index ea0fa40..6e62900 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,5 @@ !scripts !scripts/* !scripts/*/* +!scripts/** !.gitignore diff --git a/scripts/utils/py/__pycache__/journals.cpython-311.pyc b/scripts/utils/py/__pycache__/journals.cpython-311.pyc new file mode 100644 index 0000000..ca6af22 Binary files /dev/null and b/scripts/utils/py/__pycache__/journals.cpython-311.pyc differ diff --git a/scripts/utils/py/journals.py b/scripts/utils/py/journals.py new file mode 100755 index 0000000..471230d --- /dev/null +++ b/scripts/utils/py/journals.py @@ -0,0 +1,43 @@ +#!/usr/bin/python3 + +from pathlib import Path +import re + +TIME_REGEX=re.compile(r"= .* =") +TOPIC_REGEX=re.compile(r"===[=]* .* ===[=]*") +TASK_REGEX=re.compile(r"==== .* ====") +TASK_DONE_REGEX=re.compile(r".*(DUE:\s*DONE).*") + +JOURNAL_PATH = Path.home() / "Journal" + +def get_journals() -> list[Path]: + journals = { journal.name:journal for journal in JOURNAL_PATH.glob("20??-??-??.wiki") } + journal_names = sorted(journals) + return journals + +def get_journal() -> Path: + journals = get_journals() + for name in sorted(journals): + yield journals[name] + +def get_tasks(file:Path) -> list[str]: + with file.open('r') as openFile: + tasks = TASK_REGEX.findall(openFile.read()) + return tasks + +def get_task_lists(file:Path) -> tuple[list,list]: + todo = list() + done = list() + + for task in get_tasks(file): + if TASK_DONE_REGEX.match(task): + done.append(task) + else: + todo.append(task) + return todo, done + +def get_all_tasks() -> dict[Path:list[str]]: + file_tasks = { file:get_tasks(file) for file in get_journal() } + return file_tasks + +