|
|
- package common
-
- import (
- "fmt"
- "strings"
- )
-
- const (
- ANSIReset = "\x1b[0m"
- ANSIBright = "\x1b[1m"
- ANSIDim = "\x1b[2m"
- ANSIUnderscore = "\x1b[4m"
- ANSIBlink = "\x1b[5m"
- ANSIReverse = "\x1b[7m"
- ANSIHidden = "\x1b[8m"
-
- ANSIFgBlack = "\x1b[30m"
- ANSIFgRed = "\x1b[31m"
- ANSIFgGreen = "\x1b[32m"
- ANSIFgYellow = "\x1b[33m"
- ANSIFgBlue = "\x1b[34m"
- ANSIFgMagenta = "\x1b[35m"
- ANSIFgCyan = "\x1b[36m"
- ANSIFgWhite = "\x1b[37m"
-
- ANSIBgBlack = "\x1b[40m"
- ANSIBgRed = "\x1b[41m"
- ANSIBgGreen = "\x1b[42m"
- ANSIBgYellow = "\x1b[43m"
- ANSIBgBlue = "\x1b[44m"
- ANSIBgMagenta = "\x1b[45m"
- ANSIBgCyan = "\x1b[46m"
- ANSIBgWhite = "\x1b[47m"
- )
-
- // color the string s with color 'color'
- // unless s is already colored
- func treat(s string, color string) string {
- if len(s) > 2 && s[:2] == "\x1b[" {
- return s
- }
- return color + s + ANSIReset
- }
-
- func treatAll(color string, args ...interface{}) string {
- var parts []string
- for _, arg := range args {
- parts = append(parts, treat(fmt.Sprintf("%v", arg), color))
- }
- return strings.Join(parts, "")
- }
-
- func Black(args ...interface{}) string {
- return treatAll(ANSIFgBlack, args...)
- }
-
- func Red(args ...interface{}) string {
- return treatAll(ANSIFgRed, args...)
- }
-
- func Green(args ...interface{}) string {
- return treatAll(ANSIFgGreen, args...)
- }
-
- func Yellow(args ...interface{}) string {
- return treatAll(ANSIFgYellow, args...)
- }
-
- func Blue(args ...interface{}) string {
- return treatAll(ANSIFgBlue, args...)
- }
-
- func Magenta(args ...interface{}) string {
- return treatAll(ANSIFgMagenta, args...)
- }
-
- func Cyan(args ...interface{}) string {
- return treatAll(ANSIFgCyan, args...)
- }
-
- func White(args ...interface{}) string {
- return treatAll(ANSIFgWhite, args...)
- }
-
- func ColoredBytes(data []byte, textColor, bytesColor func(...interface{}) string) string {
- s := ""
- for _, b := range data {
- if 0x21 <= b && b < 0x7F {
- s += textColor(string(b))
- } else {
- s += bytesColor(Fmt("%02X", b))
- }
- }
- return s
- }
|