💾 Archived View for nytpu.com › gemlog › 2022-11-23.gmi captured on 2023-01-29 at 15:58:52. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2023-01-29)
-=-=-=-=-=-=-
The second new program I've been working on for a while and finished this month, I'm announcing the release of the Gemroff markup language!
https://git.sr.ht/~nytpu/gemroff
It's both an Ada[1] library and a CLI utility for parsing and rendering Gemroff markup to a variety of formats, currently:
Per the name, its heavily inspired by both Gemtext and Roff. The markup language itself is line-based like Gemtext, but supports inline markup as well as some additional block markup. Much of the inline markup takes inspiration from the Mandoc[2] flavor of Roff. It handily delineates block markup from inline markup by having block markup be Gemtext-style symbols and inline markup be “dotted” like Roff macros (e.g. `.Em` is for emphasis).
The design is a mash-up of the sheer simplicity of line-based Gemtext, and my favorite parts of writing Roff[3] and Mandoc. Notably, it has markup for enclosures such as quotations and parentheses; and like Mandoc has what I've termed “abutting punctuation”, which allows you to flexibly add punctuation next to, but not inside, inline markup elements. It also has several trigraphs[4] so I can write my most-used pieces of Unicode punctuation on ASCII-only retro computers—where I often write Gemlog posts.
It's actually pretty weird to describe it as “new”, because I've been using it for almost a year and generally improving it as I came across issues or things I didn't like. However, this is the first public announcement of it (although the repo's been publicly available for those looking); and I *have* just finished rewriting it in Ada. The new implementation is much improved over the original poorly-written C implementation.
Related fun fact, all Gemlog posts I've written in 2022 have been written in Gemroff, and you can view the Gemroff source by changing the `.gmi` extension to `.gr`. For instance, here's the source for this post:
⁂
Even if you don't care about Gemroff and won't ever use it (perfectly reasonable and understandable), here's a little bonus: I converted the Gemtext portion of the Gemini Specification to a man page!
⁂