func (c CursorAction) String() string {
	switch c {
	case CursorSave:
		return "\x1b[s"
	case CursorRestore:
		return "\x1b[u"
	case CursorClearLine:
		return "\x1b[K"
	case CursorClearScreen:
		return "\x1b[2J"
	}
	return ""
}
String implements the stringer interface for CursorAction
package tfmt
import (
	"strconv"
)
type CursorUp int
type CursorDown int
type CursorRight int
type CursorLeft int
type CursorPosition struct {
	X int
	Y int
}
type CursorAction int
const (
	CursorSave = CursorAction(0)
	CursorRestore = CursorAction(1)
	CursorClearLine = CursorAction(2)
	CursorClearScreen = CursorAction(3)
)
func (c CursorUp) String() string {
	return "\x1b[" + strconv.Itoa(int(c)) + "A"
}
func (c CursorDown) String() string {
	return "\x1b[" + strconv.Itoa(int(c)) + "B"
}
func (c CursorRight) String() string {
	return "\x1b[" + strconv.Itoa(int(c)) + "C"
}
func (c CursorLeft) String() string {
	return "\x1b[" + strconv.Itoa(int(c)) + "D"
}
func (c CursorPosition) String() string {
	return "\x1b[" + strconv.Itoa(c.X) + ";" + strconv.Itoa(c.Y) + "H"
}