162 lines
4.2 KiB
Go
162 lines
4.2 KiB
Go
package prompt
|
|
|
|
import "sync"
|
|
|
|
var (
|
|
consoleWriterMu sync.Mutex
|
|
consoleWriter ConsoleWriter
|
|
)
|
|
|
|
func registerConsoleWriter(f ConsoleWriter) {
|
|
consoleWriterMu.Lock()
|
|
defer consoleWriterMu.Unlock()
|
|
consoleWriter = f
|
|
}
|
|
|
|
// DisplayAttribute represents display attributes like Blinking, Bold, Italic and so on.
|
|
type DisplayAttribute int
|
|
|
|
const (
|
|
// DisplayReset reset all display attributes.
|
|
DisplayReset DisplayAttribute = iota
|
|
// DisplayBold set bold or increases intensity.
|
|
DisplayBold
|
|
// DisplayLowIntensity decreases intensity. Not widely supported.
|
|
DisplayLowIntensity
|
|
// DisplayItalic set italic. Not widely supported.
|
|
DisplayItalic
|
|
// DisplayUnderline set underline
|
|
DisplayUnderline
|
|
// DisplayBlink set blink (less than 150 per minute).
|
|
DisplayBlink
|
|
// DisplayRapidBlink set blink (more than 150 per minute). Not widely supported.
|
|
DisplayRapidBlink
|
|
// DisplayReverse swap foreground and background colors.
|
|
DisplayReverse
|
|
// DisplayInvisible set invisible. Not widely supported.
|
|
DisplayInvisible
|
|
// DisplayCrossedOut set characters legible, but marked for deletion. Not widely supported.
|
|
DisplayCrossedOut
|
|
// DisplayDefaultFont set primary(default) font
|
|
DisplayDefaultFont
|
|
)
|
|
|
|
// Color represents color on terminal.
|
|
type Color int
|
|
|
|
const (
|
|
// DefaultColor represents a default color.
|
|
DefaultColor Color = iota
|
|
|
|
// Low intensity
|
|
|
|
// Black represents a black.
|
|
Black
|
|
// DarkRed represents a dark red.
|
|
DarkRed
|
|
// DarkGreen represents a dark green.
|
|
DarkGreen
|
|
// Brown represents a brown.
|
|
Brown
|
|
// DarkBlue represents a dark blue.
|
|
DarkBlue
|
|
// Purple represents a purple.
|
|
Purple
|
|
// Cyan represents a cyan.
|
|
Cyan
|
|
// LightGray represents a light gray.
|
|
LightGray
|
|
|
|
// High intensity
|
|
|
|
// DarkGray represents a dark gray.
|
|
DarkGray
|
|
// Red represents a red.
|
|
Red
|
|
// Green represents a green.
|
|
Green
|
|
// Yellow represents a yellow.
|
|
Yellow
|
|
// Blue represents a blue.
|
|
Blue
|
|
// Fuchsia represents a fuchsia.
|
|
Fuchsia
|
|
// Turquoise represents a turquoise.
|
|
Turquoise
|
|
// White represents a white.
|
|
White
|
|
)
|
|
|
|
// ConsoleWriter is an interface to abstract output layer.
|
|
type ConsoleWriter interface {
|
|
/* Write */
|
|
|
|
// WriteRaw to write raw byte array.
|
|
WriteRaw(data []byte)
|
|
// Write to write safety byte array by removing control sequences.
|
|
Write(data []byte)
|
|
// WriteStr to write raw string.
|
|
WriteRawStr(data string)
|
|
// WriteStr to write safety string by removing control sequences.
|
|
WriteStr(data string)
|
|
// Flush to flush buffer.
|
|
Flush() error
|
|
|
|
/* Erasing */
|
|
|
|
// EraseScreen erases the screen with the background colour and moves the cursor to home.
|
|
EraseScreen()
|
|
// EraseUp erases the screen from the current line up to the top of the screen.
|
|
EraseUp()
|
|
// EraseDown erases the screen from the current line down to the bottom of the screen.
|
|
EraseDown()
|
|
// EraseStartOfLine erases from the current cursor position to the start of the current line.
|
|
EraseStartOfLine()
|
|
// EraseEndOfLine erases from the current cursor position to the end of the current line.
|
|
EraseEndOfLine()
|
|
// EraseLine erases the entire current line.
|
|
EraseLine()
|
|
|
|
/* Cursor */
|
|
|
|
// ShowCursor stops blinking cursor and show.
|
|
ShowCursor()
|
|
// HideCursor hides cursor.
|
|
HideCursor()
|
|
// CursorGoTo sets the cursor position where subsequent text will begin.
|
|
CursorGoTo(row, col int)
|
|
// CursorUp moves the cursor up by 'n' rows; the default count is 1.
|
|
CursorUp(n int)
|
|
// CursorDown moves the cursor down by 'n' rows; the default count is 1.
|
|
CursorDown(n int)
|
|
// CursorForward moves the cursor forward by 'n' columns; the default count is 1.
|
|
CursorForward(n int)
|
|
// CursorBackward moves the cursor backward by 'n' columns; the default count is 1.
|
|
CursorBackward(n int)
|
|
// AskForCPR asks for a cursor position report (CPR).
|
|
AskForCPR()
|
|
// SaveCursor saves current cursor position.
|
|
SaveCursor()
|
|
// UnSaveCursor restores cursor position after a Save Cursor.
|
|
UnSaveCursor()
|
|
|
|
/* Scrolling */
|
|
|
|
// ScrollDown scrolls display down one line.
|
|
ScrollDown()
|
|
// ScrollUp scroll display up one line.
|
|
ScrollUp()
|
|
|
|
/* Title */
|
|
|
|
// SetTitle sets a title of terminal window.
|
|
SetTitle(title string)
|
|
// ClearTitle clears a title of terminal window.
|
|
ClearTitle()
|
|
|
|
/* Font */
|
|
|
|
// SetColor sets text and background colors. and specify whether text is bold.
|
|
SetColor(fg, bg Color, bold bool)
|
|
}
|