Hello, calliope
This blog is generated by calliope, a small static-site generator I wrote in Python.[1] The whole engine is a handful of files: parse frontmatter, render Markdown, apply a template, write HTML.
Why build my own? ¶
Because the engine is the project. A blog is a low-stakes place to own the pipeline end to end.
Here's the highlight hook that wires Markdown fenced blocks to Pygments:
def _highlight(code: str, lang: str, _attrs: str) -> str:
lexer = get_lexer_by_name(lang) if lang else guess_lexer(code)
inner = highlight(code, lexer, _FORMATTER)
return f'<pre class="highlight"><code>{inner}</code></pre>'
What's next ¶
Tag pages, maybe KaTeX. Not today.
It's named after the muse of epic poetry. ↩︎