terminal

package
v2.3.7 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 8, 2022 License: MIT, MIT Imports: 11 Imported by: 331

README

survey/terminal

This package started as a copy of kokuban/go-ansi but has since been modified to fit survey's specific needs.

Documentation

Index

Constants

View Source
const (
	KeyArrowLeft       = '\x02'
	KeyArrowRight      = '\x06'
	KeyArrowUp         = '\x10'
	KeyArrowDown       = '\x0e'
	KeySpace           = ' '
	KeyEnter           = '\r'
	KeyBackspace       = '\b'
	KeyDelete          = '\x7f'
	KeyInterrupt       = '\x03'
	KeyEndTransmission = '\x04'
	KeyEscape          = '\x1b'
	KeyDeleteWord      = '\x17' // Ctrl+W
	KeyDeleteLine      = '\x18' // Ctrl+X
	SpecialKeyHome     = '\x01'
	SpecialKeyEnd      = '\x11'
	SpecialKeyDelete   = '\x12'
	IgnoreKey          = '\000'
	KeyTab             = '\t'
)

Variables

View Source
var (
	//lint:ignore ST1012 keeping old name for backwards compatibility
	InterruptErr = errors.New("interrupt")
)

Functions

func EraseLine

func EraseLine(out FileWriter, mode EraseLineMode) error

func NewAnsiStderr

func NewAnsiStderr(out FileWriter) io.Writer

NewAnsiStderr returns special stderr, which converts escape sequences to Windows API calls on Windows environment.

func NewAnsiStdout

func NewAnsiStdout(out FileWriter) io.Writer

NewAnsiStdout returns special stdout, which converts escape sequences to Windows API calls on Windows environment.

func StringWidth added in v2.3.7

func StringWidth(str string) int

StringWidth returns the visible width of a string when printed to the terminal

Types

type BufferedReader

type BufferedReader struct {
	In     io.Reader
	Buffer *bytes.Buffer
}

func (*BufferedReader) Read

func (br *BufferedReader) Read(p []byte) (int, error)

type Coord

type Coord struct {
	X Short
	Y Short
}

func (Coord) CursorIsAtLineBegin

func (cur Coord) CursorIsAtLineBegin() bool

func (Coord) CursorIsAtLineEnd

func (cur Coord) CursorIsAtLineEnd(size *Coord) bool

type Cursor

type Cursor struct {
	In  FileReader
	Out FileWriter
}

func (*Cursor) Back

func (c *Cursor) Back(n int) error

Back moves the cursor n cells to left.

func (*Cursor) Down

func (c *Cursor) Down(n int) error

Down moves the cursor n cells to down.

func (*Cursor) Forward

func (c *Cursor) Forward(n int) error

Forward moves the cursor n cells to right.

func (*Cursor) Hide

func (c *Cursor) Hide() error

Hide hide the cursor.

func (*Cursor) HorizontalAbsolute

func (c *Cursor) HorizontalAbsolute(x int) error

HorizontalAbsolute moves cursor horizontally to x.

func (*Cursor) Location

func (c *Cursor) Location(buf *bytes.Buffer) (*Coord, error)

Location returns the current location of the cursor in the terminal

func (*Cursor) MoveNextLine

func (c *Cursor) MoveNextLine(cur *Coord, terminalSize *Coord) error

for comparability purposes between windows in unix we need to print out a new line on some terminals

func (*Cursor) NextLine

func (c *Cursor) NextLine(n int) error

NextLine moves cursor to beginning of the line n lines down.

func (*Cursor) PreviousLine

func (c *Cursor) PreviousLine(n int) error

PreviousLine moves cursor to beginning of the line n lines up.

func (*Cursor) Restore

func (c *Cursor) Restore() error

Restore restores the saved position of the cursor

func (*Cursor) Save

func (c *Cursor) Save() error

Save saves the current position

func (*Cursor) Show

func (c *Cursor) Show() error

Show shows the cursor.

func (*Cursor) Size

func (c *Cursor) Size(buf *bytes.Buffer) (*Coord, error)

Size returns the height and width of the terminal.

func (*Cursor) Up

func (c *Cursor) Up(n int) error

Up moves the cursor n cells to up.

type EraseLineMode

type EraseLineMode int
const (
	ERASE_LINE_END EraseLineMode = iota
	ERASE_LINE_START
	ERASE_LINE_ALL
)

type FileReader

type FileReader interface {
	io.Reader
	Fd() uintptr
}

FileReader provides a minimal interface for Stdout.

type FileWriter

type FileWriter interface {
	io.Writer
	Fd() uintptr
}

FileWriter provides a minimal interface for Stdin.

type OnRuneFn added in v2.2.14

type OnRuneFn func(rune, []rune) ([]rune, bool, error)

type RuneReader

type RuneReader struct {
	// contains filtered or unexported fields
}

func NewRuneReader

func NewRuneReader(stdio Stdio) *RuneReader

func (*RuneReader) Buffer

func (rr *RuneReader) Buffer() *bytes.Buffer

func (*RuneReader) ReadLine

func (rr *RuneReader) ReadLine(mask rune, onRunes ...OnRuneFn) ([]rune, error)

func (*RuneReader) ReadLineWithDefault added in v2.2.14

func (rr *RuneReader) ReadLineWithDefault(mask rune, d []rune, onRunes ...OnRuneFn) ([]rune, error)

func (*RuneReader) ReadRune

func (rr *RuneReader) ReadRune() (rune, int, error)

ReadRune Parse escape sequences such as ESC [ A for arrow keys. See https://vt100.net/docs/vt102-ug/appendixc.html

func (*RuneReader) RestoreTermMode

func (rr *RuneReader) RestoreTermMode() error

func (*RuneReader) SetTermMode

func (rr *RuneReader) SetTermMode() error

For reading runes we just want to disable echo.

type Short

type Short int16
var COORDINATE_SYSTEM_BEGIN Short = 1

type Stdio

type Stdio struct {
	In  FileReader
	Out FileWriter
	Err io.Writer
}

Stdio is the standard input/output the terminal reads/writes with.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL