Compare commits

...

2 Commits

Author SHA1 Message Date
olari
96dda8ec5e update 2021-06-20 21:30:52 +03:00
olari
bf589d94b5 update generator 2021-06-19 17:13:48 +03:00
4 changed files with 91 additions and 1 deletions

View File

@@ -7,9 +7,17 @@ def generate_godword(value):
def generate_habits(value): def generate_habits(value):
return '\n'.join(f'[{"x" if v else "-"}] {k}' for k,v in value.items()) return '\n'.join(f'[{"x" if v else "-"}] {k}' for k,v in value.items())
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 = { header_modules = {
'godword': generate_godword, 'godword': generate_godword,
'habits': generate_habits, 'habits': generate_habits,
'notifications': generate_notifications,
'tasks': generate_tasks,
} }
def generate_diet(block): def generate_diet(block):
@@ -24,13 +32,42 @@ def generate_default(block):
return f'@{block["type"]} {block["value"]}' return f'@{block["type"]} {block["value"]}'
def generate_timer(block): def generate_timer(block):
return f'@{block["type"]} {format_timestamp(block["timestamp"])}' parts = [f'@{block["type"]}']
if ts := block.get('timestamp'):
parts.append(format_timestamp(ts))
return ' '.join(parts)
def generate_info(block):
return f'@info {block["value"]}'
def generate_notes(block):
parts = ['@notes']
if source := block.get('source'):
parts.append(source)
if title := block.get('title'):
parts.append(title)
return '\n'.join(parts)
def generate_notify(block):
return f'@notify {block["day"]} {block["message"]}'
entry_modules = { entry_modules = {
'diet': generate_diet, 'diet': generate_diet,
'exercise': generate_exercise, 'exercise': generate_exercise,
'hide': lambda _: '@hide', 'hide': lambda _: '@hide',
'post': generate_timer, 'post': generate_timer,
'info': generate_default,
'notes': generate_notes,
'behavior': generate_default,
'task': generate_default,
'start': generate_timer,
'stop': generate_timer,
'done': generate_timer,
'notify': generate_notify,
} }
journal = json.load(open('journal.json')) journal = json.load(open('journal.json'))

View File

@@ -23,6 +23,20 @@ words = (journal_path / 'godword').read_text().strip().split('\n')
godword = '\n'.join(' '.join(random.choice(words) godword = '\n'.join(' '.join(random.choice(words)
for __ in range(10)) for _ in range(2)) 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(): if not target_page.exists():
Popen( Popen(
['bash', str(script_path / 'backup-script.sh'), current_date+'.zip'], ['bash', str(script_path / 'backup-script.sh'), current_date+'.zip'],
@@ -43,6 +57,16 @@ if not target_page.exists():
block['message'] 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 = [ parts = [
f'# {target_page.stem}', f'# {target_page.stem}',
f'Godword:\n{godword}', f'Godword:\n{godword}',
@@ -56,6 +80,14 @@ if not target_page.exists():
) )
parts.append(f'Notifications:\n{notifications_rendered}') 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' header = '\n\n'.join(parts) + '\n'
target_page.write_text(header) target_page.write_text(header)

View File

@@ -29,11 +29,19 @@ def parse_notifications(notifications):
}) })
return result 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 = { header_modules = {
'godword': parse_godword, 'godword': parse_godword,
'habits': parse_habits, 'habits': parse_habits,
'notifications': parse_notifications, 'notifications': parse_notifications,
'tasks': parse_tasks,
} }
def parse_header(header): def parse_header(header):

13
test.py Normal file
View File

@@ -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()