func IndentFormatter(w io.Writer, indent string) Formatter {
	return &indentFormatter{w, []byte(indent), 0, stBOL}
}
IndentFormatter returns a new Formatter which interprets %i and %u in the
Format() formats string as indent and unindent commands. The commands can
nest. The Formatter writes to io.Writer 'w' and inserts one 'indent'
string per current indent level value.
Behaviour of commands reaching negative indent levels is undefined.
IndentFormatter(os.Stdout, "\t").Format("abc%d%%e%i\nx\ny\n%uz\n", 3)
output:
abc3%e
x
y
z
The Go quoted string literal form of the above is:
"abc%%e\n\tx\n\tx\nz\n"
The commands can be scattered between separate invocations of Format(),
i.e. the formatter keeps track of the indent level and knows if it is
positioned on start of a line and should emit indentation(s).
The same output as above can be produced by e.g.:
f := IndentFormatter(os.Stdout, " ")
f.Format("abc%d%%e%i\nx\n", 3)
f.Format("y\n%uz\n")
package format
import (
	"bytes"
	"fmt"
	"io"
)
const (
	st0 = iota
	stBOL
	stPERC
	stBOLPERC
)
type Formatter interface {
	io.Writer
	Format(format string, args ...interface{}) (n int, errno error)
}
type indentFormatter struct {
	io.Writer
	indent      []byte
	indentLevel int
	state       int
}
var replace = map[rune]string{
	'\000': "\\0",
	'\'':   "''",
	'\n':   "\\n",
	'\r':   "\\r",
}