Version: v2.3.6 Latest Latest

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

Go to latest
Published: Sep 9, 2022 License: MIT, MIT Imports: 11 Imported by: 229



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




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'


View Source
var (
	InterruptErr = errors.New("interrupt")


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.


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

type FileReader

type FileReader interface {
	Fd() uintptr

FileReader provides a minimal interface for Stdout.

type FileWriter

type FileWriter interface {
	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

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