package statusline import ( "fmt" "io" ) type StatusLine interface { Put(line string) End(keep bool) } type statusLine struct { out io.Writer prevLen int } func New(out io.Writer) StatusLine { return &statusLine{out: out} } func (sl *statusLine) Put(line string) { fmt.Fprintf(sl.out, "\r%-[1]*[2]s", sl.prevLen, line) sl.prevLen = len(line) } func (sl *statusLine) End(keep bool) { if keep { io.WriteString(sl.out, "\n") } else { fmt.Fprintf(sl.out, "\r%-[1]*[2]s\r", sl.prevLen, "") } }