package aec import "fmt" // EraseMode is listed in a variable EraseModes. type EraseMode uint var ( // EraseModes is a list of EraseMode. EraseModes struct { // All erase all. All EraseMode // Head erase to head. Head EraseMode // Tail erase to tail. Tail EraseMode } // Save saves the cursor position. Save ANSI // Restore restores the cursor position. Restore ANSI // Hide hides the cursor. Hide ANSI // Show shows the cursor. Show ANSI // Report reports the cursor position. Report ANSI ) // Up moves up the cursor. func Up(n uint) ANSI { if n == 0 { return empty } return newAnsi(fmt.Sprintf(esc+"%dA", n)) } // Down moves down the cursor. func Down(n uint) ANSI { if n == 0 { return empty } return newAnsi(fmt.Sprintf(esc+"%dB", n)) } // Right moves right the cursor. func Right(n uint) ANSI { if n == 0 { return empty } return newAnsi(fmt.Sprintf(esc+"%dC", n)) } // Left moves left the cursor. func Left(n uint) ANSI { if n == 0 { return empty } return newAnsi(fmt.Sprintf(esc+"%dD", n)) } // NextLine moves down the cursor to head of a line. func NextLine(n uint) ANSI { if n == 0 { return empty } return newAnsi(fmt.Sprintf(esc+"%dE", n)) } // PreviousLine moves up the cursor to head of a line. func PreviousLine(n uint) ANSI { if n == 0 { return empty } return newAnsi(fmt.Sprintf(esc+"%dF", n)) } // Column set the cursor position to a given column. func Column(col uint) ANSI { return newAnsi(fmt.Sprintf(esc+"%dG", col)) } // Position set the cursor position to a given absolute position. func Position(row, col uint) ANSI { return newAnsi(fmt.Sprintf(esc+"%d;%dH", row, col)) } // EraseDisplay erases display by given EraseMode. func EraseDisplay(m EraseMode) ANSI { return newAnsi(fmt.Sprintf(esc+"%dJ", m)) } // EraseLine erases lines by given EraseMode. func EraseLine(m EraseMode) ANSI { return newAnsi(fmt.Sprintf(esc+"%dK", m)) } // ScrollUp scrolls up the page. func ScrollUp(n int) ANSI { if n == 0 { return empty } return newAnsi(fmt.Sprintf(esc+"%dS", n)) } // ScrollDown scrolls down the page. func ScrollDown(n int) ANSI { if n == 0 { return empty } return newAnsi(fmt.Sprintf(esc+"%dT", n)) } func init() { EraseModes = struct { All EraseMode Head EraseMode Tail EraseMode }{ Tail: 0, Head: 1, All: 2, } Save = newAnsi(esc + "s") Restore = newAnsi(esc + "u") Hide = newAnsi(esc + "?25l") Show = newAnsi(esc + "?25h") Report = newAnsi(esc + "6n") }