Product Promotion
0x5a.live
for different kinds of informations and explorations.
GitHub - logrusorgru/aurora: Golang ultimate ANSI-colors that supports Printf/Sprintf methods
Golang ultimate ANSI-colors that supports Printf/Sprintf methods - logrusorgru/aurora
Visit SiteGitHub - logrusorgru/aurora: Golang ultimate ANSI-colors that supports Printf/Sprintf methods
Golang ultimate ANSI-colors that supports Printf/Sprintf methods - logrusorgru/aurora
Powered by 0x5a.live ๐
Aurora
Ultimate ANSI colors for Golang. The package supports Printf/Sprintf etc.
TOC
- Installation
- Usage
- Chains
- Colorize
- Grayscale
- 8-bit colors
- Supported Colors & Formats
- Limitations
- Licensing
Installation
Version 1.x
Using gopkg.in.
go get -u gopkg.in/logrusorgru/aurora.v1
Version 2.x
go get -u github.com/logrusorgru/aurora
Go modules support, version v3+
Get
go get -u github.com/logrusorgru/aurora/v3
The v3 was introduced to support go.mod
and leave previous import paths as is.
Currently, there is no changes between them (excluding the importpath's /v3 tail).
The latest version
go get -u github.com/logrusorgru/aurora/v4
With hyperlinks.
Test
go test -cover -race github.com/logrusorgru/aurora/v4
Replace the import path with your, if it's different.
Usage
Simple
package main
import (
"fmt"
"github.com/logrusorgru/aurora/v4"
)
func main() {
fmt.Println("Hello,", aurora.Magenta("Aurora"))
fmt.Println(aurora.Bold(aurora.Cyan("Cya!")))
}
Printf
package main
import (
"fmt"
"github.com/logrusorgru/aurora/v4"
)
func main() {
fmt.Printf("Got it %d times\n", aurora.Green(1240))
fmt.Printf("PI is %+1.2e\n", aurora.Cyan(3.14))
}
aurora.Sprintf
package main
import (
"fmt"
"github.com/logrusorgru/aurora/v4"
)
func main() {
fmt.Println(aurora.Sprintf(aurora.Magenta("Got it %d times"), aurora.Green(1240)))
}
Enable/Disable colors
package main
import (
"fmt"
"flag"
"github.com/logrusorgru/aurora/v4"
)
// colorizer
var au *aurora.Aurora
var colors = flag.Bool("colors", false, "enable or disable colors")
func init() {
flag.Parse()
au = aurora.New(WithColors(*colors))
}
func main() {
// use colorizer
fmt.Println(au.Green("Hello"))
}
Without flags:
With -colors
flag:
Hyperlinks, default colorizer, and configurations
Hyperlinks feature description.
Add a red hyperlinks with text "Example" that is referencing to http://example.com.
package main
import (
"flag"
"fmt"
"github.com/logrusorgru/aurora/v4"
)
func main() {
var conf = aurora.NewConfig()
conf.AddFlags(flag.CommandLine, "prefix.")
flag.Parse()
aurora.DefaultColorizer = aurora.New(conf.Options()...) // set global
fmt.Println(aurora.Red("Example").Hyperlink("http://example.com/"))
}
Depending flags:
Chains
The following samples are equal
x := aurora.BgMagenta(aurora.Bold(aurora.Red("x")))
x := aurora.Red("x").Bold().BgMagenta()
The second is more readable
Colorize
There is Colorize
function that allows to choose some colors and
format from a side
func getColors() Color {
// some stuff that returns appropriate colors and format
}
// [...]
func main() {
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)
a Colorize
clears previous colors
x := aurora.Red("x").Colorize(BgGreen) // will be with green background only
Grayscale
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),
)
8-bit colors
Methods Index
and BgIndex
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 main
import (
"fmt"
"github.com/logrusorgru/aurora"
)
func main() {
for i := uint8(16); i <= 231; i++ {
fmt.Println(i, aurora.Index(i, "pew-pew"), aurora.BgIndex(i, "pew-pew"))
}
}
Supported colors & formats
- 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
All colors
Standard and bright colors
Formats are likely supported
Formats are likely unsupported
Limitations
There is no way to represent %T
and %p
with colors using
a standard approach
package main
import (
"fmt"
"github.com/logrusorgru/aurora"
)
func main() {
var (
r = aurora.Red("red")
i int
)
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 is Red(fmt.Sprintf("%T", some))
Windows
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:
TTY
The Aurora has no internal TTY detectors by design. Take a look this comment if you want turn on colors for a terminal only, and turn them off for a file.
Licensing
Copyright ยฉ 2016-2022 The Aurora Authors. This work is free. It comes without any warranty, to the extent permitted by applicable law. You can redistribute it and/or modify it under the terms of the the Unlicense. See the LICENSE file for more details.
GoLang Resources
are all listed below.
Made with โค๏ธ
to provide different kinds of informations and resources.