README

survey/terminal

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

Expand ▾ Collapse ▴

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'
)

Variables

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

Functions

func EraseLine

func EraseLine(out FileWriter, mode EraseLineMode)

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.

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)

Back moves the cursor n cells to left.

func (*Cursor) Down

func (c *Cursor) Down(n int)

Down moves the cursor n cells to down.

func (*Cursor) Forward

func (c *Cursor) Forward(n int)

Forward moves the cursor n cells to right.

func (*Cursor) Hide

func (c *Cursor) Hide()

Hide hide the cursor.

func (*Cursor) HorizontalAbsolute

func (c *Cursor) HorizontalAbsolute(x int)

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) Move

func (c *Cursor) Move(x int, y int)

Move moves the cursor to a specific x,y location.

func (*Cursor) MoveNextLine

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

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)

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

func (*Cursor) PreviousLine

func (c *Cursor) PreviousLine(n int)

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

func (*Cursor) Restore

func (c *Cursor) Restore()

Restore restores the saved position of the cursor

func (*Cursor) Save

func (c *Cursor) Save()

Save saves the current position

func (*Cursor) Show

func (c *Cursor) Show()

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)

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 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) ([]rune, error)

func (*RuneReader) ReadRune

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

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.