forked from toolshed/abra
aec
Go wrapper for ANSI escape code.
Install
go get github.com/morikuni/aec
Features
ANSI escape codes depend on terminal environment.
Some of these features may not work.
Check supported Font-Style/Font-Color features with checkansi.
Wikipedia for more detail.
Cursor
Up(n)Down(n)Right(n)Left(n)NextLine(n)PreviousLine(n)Column(col)Position(row, col)SaveRestoreHideShowReport
Erase
EraseDisplay(mode)EraseLine(mode)
Scroll
ScrollUp(n)ScrollDown(n)
Font Style
BoldFaintItalicUnderlineBlinkSlowBlinkRapidInverseConcealCrossOutFrameEncircleOverline
Font Color
Foreground color.
DefaultFBlackFRedFGreenFYellowFBlueFMagentaFCyanFWhiteFLightBlackFLightRedFLightGreenFLightYellowFLightBlueFLightMagentaFLightCyanFLightWhiteFColor3BitF(color)Color8BitF(color)FullColorF(r, g, b)
Background color.
DefaultBBlackBRedBGreenBYellowBBlueBMagentaBCyanBWhiteBLightBlackBLightRedBLightGreenBLightYellowBLightBlueBLightMagentaBLightCyanBLightWhiteBColor3BitB(color)Color8BitB(color)FullColorB(r, g, b)
Color Converter
24bit RGB color to ANSI color.
NewRGB3Bit(r, g, b)NewRGB8Bit(r, g, b)
Builder
To mix these features.
custom := aec.EmptyBuilder.Right(2).RGB8BitF(128, 255, 64).RedB().ANSI
custom.Apply("Hello World")
Usage
- Create ANSI by
aec.XXX().With(aec.YYY())oraec.EmptyBuilder.XXX().YYY().ANSI - Print ANSI by
fmt.Print(ansi, "some string", aec.Reset)orfmt.Print(ansi.Apply("some string"))
aec.Reset should be added when using font style or font color features.
Example
Simple progressbar.
package main
import (
"fmt"
"strings"
"time"
"github.com/morikuni/aec"
)
func main() {
const n = 20
builder := aec.EmptyBuilder
up2 := aec.Up(2)
col := aec.Column(n + 2)
bar := aec.Color8BitF(aec.NewRGB8Bit(64, 255, 64))
label := builder.LightRedF().Underline().With(col).Right(1).ANSI
// for up2
fmt.Println()
fmt.Println()
for i := 0; i <= n; i++ {
fmt.Print(up2)
fmt.Println(label.Apply(fmt.Sprint(i, "/", n)))
fmt.Print("[")
fmt.Print(bar.Apply(strings.Repeat("=", i)))
fmt.Println(col.Apply("]"))
time.Sleep(100 * time.Millisecond)
}
}
