# `nihdoc` Not Invented Here Doc - - - --- > "because markdown isn't in base!" > > ~akarle ## Description `nihdoc` is my take at a light markup language to improve my time-to-publish on blog posts. I concede up front that others should likely use markdown, which is both prettier and more well-known, but as a personal challenge I try to keep my blog publishable under *only the OpenBSD base system*. Since there's no markdown parser in base, I had to write my own! Probably the most interesting feature is that it's is a streaming parser using only constant space. In other words, it only reads the input once, never scans, and doesn't store the input in memory. You can see this if you run it interactively: `cat | nihdoc`. ## Usage `nihdoc` reads from stdin and prints HTML snippets to stdout. No arguments are read and no files are accessible (on OpenBSD this is enforced via pledge(2)). Common usage is: $ (cat header.html; nihdoc < file.txt; cat footer.html) > file.html ## Support - #|##|### headers -

tags around paragraphs (allowed to wrap!) - - bullets, breaks allowed if indented - 1. numerical lists, breaks allowed if indented - > quotes - TAB code blocks - Inline `code`, _italics_, and *bold* - Escaping via \\ - Links: [my site](https://alexkarle.com) or [https://alexkarle.com] ## TODO - Mixed lists