diff --git a/generate.py b/generate.py index 34d8f43..2fab6a9 100644 --- a/generate.py +++ b/generate.py @@ -10,10 +10,14 @@ def generate_habits(value): def generate_notifications(value): return '\n'.join(f'[[{n["source"]}]] {n["message"]}' for n in value) +def generate_tasks(value): + return '\n'.join(f'[{"x" if v else "-"}] {k}' for k,v in value.items()) + header_modules = { 'godword': generate_godword, 'habits': generate_habits, 'notifications': generate_notifications, + 'tasks': generate_tasks, } def generate_diet(block): diff --git a/open-journal.py b/open-journal.py index 0272a84..1a16260 100644 --- a/open-journal.py +++ b/open-journal.py @@ -23,6 +23,20 @@ words = (journal_path / 'godword').read_text().strip().split('\n') godword = '\n'.join(' '.join(random.choice(words) for __ in range(10)) for _ in range(2)) +def parse_tasks_file(): + result = [] + + tasks = (journal_path / 'tasks').read_text().splitlines() + + for task in tasks: + days, name = task.split(':') + days = days.split(',') + result.append((days, name)) + + return result + +tasks_file = parse_tasks_file() + if not target_page.exists(): Popen( ['bash', str(script_path / 'backup-script.sh'), current_date+'.zip'], @@ -43,6 +57,16 @@ if not target_page.exists(): block['message'] )) + tasks = [] + curr_day = { + 0: 'mo', 1: 'tu', 2: 'we', 3: 'th', + 4: 'fr', 5: 'sa', 6: 'su', + }[datetime.now().weekday()] + + for days, name in tasks_file: + if curr_day in days: + tasks.append(name) + parts = [ f'# {target_page.stem}', f'Godword:\n{godword}', @@ -56,6 +80,14 @@ if not target_page.exists(): ) parts.append(f'Notifications:\n{notifications_rendered}') + + if tasks: + tasks_rendered = '\n'.join( + f'[-] {task}' + for task in tasks + ) + + parts.append(f'Tasks:\n{tasks_rendered}') header = '\n\n'.join(parts) + '\n' target_page.write_text(header) diff --git a/parse.py b/parse.py index 3ba4276..1d93a72 100644 --- a/parse.py +++ b/parse.py @@ -29,11 +29,19 @@ def parse_notifications(notifications): }) return result +def parse_tasks(tasks): + result = {} + for task in tasks.splitlines(): + value, name = task.split(maxsplit=1) + name = name.strip() + result[name] = value[1] == 'x' + return result header_modules = { 'godword': parse_godword, 'habits': parse_habits, 'notifications': parse_notifications, + 'tasks': parse_tasks, } def parse_header(header): diff --git a/test.py b/test.py new file mode 100644 index 0000000..6eda598 --- /dev/null +++ b/test.py @@ -0,0 +1,13 @@ +from pathlib import Path + +from generate import generate_page +from parse import parse_page + +for fpath in list(sorted((Path.home() / 'workspace' / 'journal').glob('*.md'))): + text = fpath.read_text() + parsed = parse_page(text) + generated = generate_page(fpath.stem, parsed['header'], parsed['entries']) + for l1, l2 in zip(text.split('\n'), generated.split('\n')): + if l1 != l2: + print('\n'.join([fpath.stem, l1, l2])) + breakpoint() \ No newline at end of file