mirror of
				https://gitea.com/Lydanne/buildx.git
				synced 2025-10-31 16:13:45 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			179 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			179 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # aec
 | |
| 
 | |
| [](https://godoc.org/github.com/morikuni/aec)
 | |
| 
 | |
| Go wrapper for ANSI escape code.
 | |
| 
 | |
| ## Install
 | |
| 
 | |
| ```bash
 | |
| 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](./checkansi).
 | |
| 
 | |
| [Wikipedia](https://en.wikipedia.org/wiki/ANSI_escape_code) 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.
 | |
| 
 | |
| ```go
 | |
| custom := aec.EmptyBuilder.Right(2).RGB8BitF(128, 255, 64).RedB().ANSI
 | |
| custom.Apply("Hello World")
 | |
| ```
 | |
| 
 | |
| ## Usage
 | |
| 
 | |
| 1. Create ANSI by `aec.XXX().With(aec.YYY())` or `aec.EmptyBuilder.XXX().YYY().ANSI`
 | |
| 2. Print ANSI by `fmt.Print(ansi, "some string", aec.Reset)` or `fmt.Print(ansi.Apply("some string"))`
 | |
| 
 | |
| `aec.Reset` should be added when using font style or font color features.
 | |
| 
 | |
| ## Example
 | |
| 
 | |
| Simple progressbar.
 | |
| 
 | |
| 
 | |
| 
 | |
| ```go
 | |
| 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)
 | |
| 	}
 | |
| }
 | |
| ```
 | |
| 
 | |
| ## License
 | |
| 
 | |
| [MIT](./LICENSE)
 | |
| 
 | |
| 
 | 
