mirror of
				https://gitea.com/Lydanne/buildx.git
				synced 2025-10-30 23:53:48 +08:00 
			
		
		
		
	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)
- Save
- Restore
- Hide
- Show
- Report
Erase
- EraseDisplay(mode)
- EraseLine(mode)
Scroll
- ScrollUp(n)
- ScrollDown(n)
Font Style
- Bold
- Faint
- Italic
- Underline
- BlinkSlow
- BlinkRapid
- Inverse
- Conceal
- CrossOut
- Frame
- Encircle
- Overline
Font Color
Foreground color.
- DefaultF
- BlackF
- RedF
- GreenF
- YellowF
- BlueF
- MagentaF
- CyanF
- WhiteF
- LightBlackF
- LightRedF
- LightGreenF
- LightYellowF
- LightBlueF
- LightMagentaF
- LightCyanF
- LightWhiteF
- Color3BitF(color)
- Color8BitF(color)
- FullColorF(r, g, b)
Background color.
- DefaultB
- BlackB
- RedB
- GreenB
- YellowB
- BlueB
- MagentaB
- CyanB
- WhiteB
- LightBlackB
- LightRedB
- LightGreenB
- LightYellowB
- LightBlueB
- LightMagentaB
- LightCyanB
- LightWhiteB
- Color3BitB(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)
	}
}
 
			