- Notifications
You must be signed in to change notification settings - Fork56
Golang ultimate ANSI-colors that supports Printf/Sprintf methods
License
logrusorgru/aurora
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Ultimate ANSI colors for Golang. The package supports Printf/Sprintf etc.
Using gopkg.in.
go get -u gopkg.in/logrusorgru/aurora.v1
go get -u github.com/logrusorgru/aurora
Get
go get -u github.com/logrusorgru/aurora/v3
The v3 was introduced to supportgo.mod
and leave previous import paths as is.Currently, there is no changes between them (excluding the importpath's /v3 tail).
go get -u github.com/logrusorgru/aurora/v4
With hyperlinks.
go test -cover -race github.com/logrusorgru/aurora/v4
Replace the import path with your, if it's different.
package mainimport ("fmt""github.com/logrusorgru/aurora/v4")funcmain() {fmt.Println("Hello,",aurora.Magenta("Aurora"))fmt.Println(aurora.Bold(aurora.Cyan("Cya!")))}
package mainimport ("fmt""github.com/logrusorgru/aurora/v4")funcmain() {fmt.Printf("Got it %d times\n",aurora.Green(1240))fmt.Printf("PI is %+1.2e\n",aurora.Cyan(3.14))}
package mainimport ("fmt""github.com/logrusorgru/aurora/v4")funcmain() {fmt.Println(aurora.Sprintf(aurora.Magenta("Got it %d times"),aurora.Green(1240)))}
package mainimport ("fmt""flag""github.com/logrusorgru/aurora/v4")// colorizervarau*aurora.Auroravarcolors=flag.Bool("colors",false,"enable or disable colors")funcinit() {flag.Parse()au=aurora.New(WithColors(*colors))}funcmain() {// use colorizerfmt.Println(au.Green("Hello"))}
Hyperlinks feature description.
Add a red hyperlinks with text "Example" that is referencing tohttp://example.com.
package mainimport ("flag""fmt""github.com/logrusorgru/aurora/v4")funcmain() {varconf=aurora.NewConfig()conf.AddFlags(flag.CommandLine,"prefix.")flag.Parse()aurora.DefaultColorizer=aurora.New(conf.Options()...)// set globalfmt.Println(aurora.Red("Example").Hyperlink("http://example.com/"))}
The following samples are equal
x:=aurora.BgMagenta(aurora.Bold(aurora.Red("x")))
x:=aurora.Red("x").Bold().BgMagenta()
The second is more readable
There isColorize
function that allows to choose some colors andformat from a side
funcgetColors()Color {// some stuff that returns appropriate colors and format}// [...]funcmain() {fmt.Println(aurora.Colorize("Greeting",getColors()))}
Less complicated example
x:=aurora.Colorize("Greeting",GreenFg|GrayBg|BoldFm)
Unlike other color functions and methods (such as Red/BgBlue etc)aColorize
clears previous colors
x:=aurora.Red("x").Colorize(BgGreen)// will be with green background only
fmt.Println(" ",aurora.Gray(1-1," 00-23 ").BgGray(24-1),aurora.Gray(4-1," 03-19 ").BgGray(20-1),aurora.Gray(8-1," 07-15 ").BgGray(16-1),aurora.Gray(12-1," 11-11 ").BgGray(12-1),aurora.Gray(16-1," 15-07 ").BgGray(8-1),aurora.Gray(20-1," 19-03 ").BgGray(4-1),aurora.Gray(24-1," 23-00 ").BgGray(1-1),)
MethodsIndex
andBgIndex
implements 8-bit colors.
Index/BgIndex | Meaning | Foreground | Background |
---|---|---|---|
0- 7 | standard colors | 30- 37 | 40- 47 |
8- 15 | bright colors | 90- 97 | 100-107 |
16-231 | 216 colors | 38;5;n | 48;5;n |
232-255 | 24 grayscale | 38;5;n | 48;5;n |
Example
package mainimport ("fmt""github.com/logrusorgru/aurora")funcmain() {fori:=uint8(16);i<=231;i++ {fmt.Println(i,aurora.Index(i,"pew-pew"),aurora.BgIndex(i,"pew-pew"))}}
- formats
- bold (1)
- faint (2)
- doubly-underline (21)
- fraktur (20)
- italic (3)
- underline (4)
- slow blink (5)
- rapid blink (6)
- reverse video (7)
- conceal (8)
- crossed out (9)
- framed (51)
- encircled (52)
- overlined (53)
- background and foreground colors, including bright
- black
- red
- green
- yellow (brown)
- blue
- magenta
- cyan
- white
- 24 grayscale colors
- 216 8-bit colors
There is no way to represent%T
and%p
with colors usinga standard approach
package mainimport ("fmt""github.com/logrusorgru/aurora")funcmain() {var (r=aurora.Red("red")iint)fmt.Printf("%T %p\n",r,aurora.Green(&i))}
Output will be without colors
aurora.value %!p(aurora.value={0xc42000a310 768 0})
The obvious workaround isRed(fmt.Sprintf("%T", some))
The Aurora provides ANSI colors only, so there is no support for Windows. That said, there are workarounds available.Check out these comments to learn more:
The Aurora has no internal TTY detectors by design. Take a lookthis comment if you want turnon colors for a terminal only, and turn them off for a file.
Copyright © 2016-2022 The Aurora Authors. This work is free.It comes without any warranty, to the extent permitted by applicablelaw. You can redistribute it and/or modify it under the terms of thethe Unlicense. See the LICENSE file for more details.
About
Golang ultimate ANSI-colors that supports Printf/Sprintf methods