literate is a Go command line tool for generating readable program
listings. It was inspired by Luke Gorries' post
"Readable Programs"
and, in particular, his pbook example. It works by treating all text that have
a line comment as Markdown text, and putting code in code blocks.
Listings that are written to a file are written as <file.go>.<format>; for
example, producing listings for listing.go:
- markdown ->
listing.go.md - HTML ->
listing.go.html - PDF ->
listing.go.pdf
Multiple languages are supported; for the list, pass the -l help
flag to literate. literate is a simple tool that only recognises line
comments right now; you can tell it what a line comment starts with and
it will use that.
-
To produce an HTML listing for
listing.go:literate -o html listing.goThis will produce
listing.go.html, which is a standalone page. The template for this page is contained in thehtml.gosource file, and is taken from my site tyrfingr. -
To produce a PDF listing for
pandoc.go:literate -o pdf pandoc.goSimilar to the previous example, this will produce the PDF file
pandoc.go.pdf. -
To produce a markdown listing for
html.goand have this printed to standard output:literate html.goOr, alternatively,
literate -o - html.go -
You can produce listings for multiple files at the same time:
literate -o pdf *.goIf you ran this on the
literatedirectory, you would havelisting.go.pdf,html.go.pdf,pandoc.go.pdf, andtexout.go.pdf.
Standalone listings are generated; the following formats (selected with
the -o flag) are supported:
- html - generate HTML listing
- latex - uses pandoc to convert the markdown to a LaTeX listing.
- md - generate markdown listing
- pdf - uses pandoc to convert the markdown to a PDF listing.
- tex - rudimentary pure-Go TeX listing.
-
literateusesblackfridayfor producing HTML from the listing. This will automatically be pulled in bygo get. -
pandocis required for conversion to PDF.
Ultimately, I wanted a way to take notes while reading a book and have a way to extract better-looking notes from a source file while still retaining the ability to run the files. This program does (pretty much) just what I want it to, although block comments would be nice. Originally, I had golst, but wanted to be able to use it with Lisp and Haskell.
literate is released under an ISC license. For details, see
LICENSE in the source repository.