A Polyglot Programmer’s Notebook

gowritego - A tool for converting golang source to markdown

This is the main file for gowritego, a simple tool that reads special comment blocks like this in a golang program to allow. This handy tool let me begin this article about the tool (how meta!) by simply adding an enhanced multiline comment block to the main program file. For more information, see the full code and the readme at

package main

import (

func main() {
	argsWithoutProg := os.Args[1:]
	if len(argsWithoutProg) != 2 {
		fmt.Printf("Usage %v inputFile (Go) outputFile (markdown)\n", os.Args[0])
	input := os.Args[1]
	output := os.Args[2]

	fmt.Printf("Processing %v to %v\n", input, output)
	// Read input file to blocks of either markdown or code
	blocks, err := gowritego.ReadFile(input)
	if err != nil {

	// Render and write the markdown
	markdown := gowritego.BlocksToMarkdown(blocks)
	_, err = gowritego.WriteFile(output, markdown)
	if err != nil {