Building a single-pass rich-text DSL parser (no regex)

I built this while trying to replace Markdown in my personal blog.
Markdown is convenient, but once you start adding custom syntax, parsing…