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

Expand ▾ Collapse ▴




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'


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


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.


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

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

type Stdio

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

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