Source code for hyperdiary.hugo
import os
import io
from datetime import date
from . import diary
[docs]def nice_date(dt: date) -> str:
return dt.strftime("%d.%m.%Y")
[docs]def diary_to_hugo(diary_instance: diary.Diary, folder: diary.Pathlike) -> None:
content_dir = os.path.join(str(folder), 'content')
os.makedirs(content_dir, exist_ok=True)
for entry in diary_instance.entries:
current = entry.dt
month_dir = os.path.join(content_dir, 'post',
'{:04d}'.format(current.year),
'{:02d}'.format(current.month))
os.makedirs(month_dir, exist_ok=True)
with open(os.path.join(month_dir,
'{:02d}.md'.format(current.day)), 'w') as f:
tags = []
day_text = io.StringIO()
for line in entry.lines:
day_text.write('- ')
for token in diary.tokenize(line):
if token.type == diary.TokenType.Id:
day_text.write('[{}](#{})'.format(token.text,
token.ref))
elif token.type == diary.TokenType.Text:
day_text.write(token.text)
elif token.type == diary.TokenType.Tag:
tags.append(token.text)
else:
raise NotImplementedError('Unknown TokenType')
day_text.write('\n')
f.write('+++\n')
f.write('title = "{0}"\n'.format(nice_date(current)))
f.write('date = "{0}"\n'.format(current.isoformat()))
f.write('categories = ["day"]\n')
f.write('draft = false\n')
f.write('tags = {}\n'.format(tags))
f.write('\n+++\n\n')
day_text.seek(0)
f.write(day_text.read())
f.write('\n')