44 lines
1.1 KiB
Python
44 lines
1.1 KiB
Python
|
#!/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
|
||
|
|
||
|
|