Documentation ¶
Overview ¶
Package color is command line color library. Support rich color rendering output, universal API method, compatible with Windows system
Source code and other details for the project are available at GitHub:
https://github.com/zhangyiming748/pretty/color
More usage please see README and tests.
Example ¶
// quick use like fmt.Print* Red.Println("Simple to use color") Green.Print("Simple to use color") Cyan.Printf("Simple to use %s\n", "color") Gray.Printf("Simple to use %s\n", "color") Blue.Printf("Simple to use %s\n", "color") Yellow.Printf("Simple to use %s\n", "color") Magenta.Printf("Simple to use %s\n", "color") // use like func red := FgRed.Render green := FgGreen.Render fmt.Printf("%s line %s library\n", red("Command"), green("color")) // custom color New(FgWhite, BgBlack).Println("custom color style") // can also: Style{FgCyan, OpBold}.Println("custom color style") // internal theme/style: Info.Tips("message") Info.Prompt("message") Info.Println("info message") Warn.Println("warning message") Error.Println("error message") Danger.Println("danger message") // use style tag Print("<suc>he</><comment>llo</>, <cyan>wel</><red>come</>\n") // apply a style tag Tag("info").Println("info style text") // prompt message Info.Prompt("prompt style message") Warn.Prompt("prompt style message") // tips message Info.Tips("tips style message") Warn.Tips("tips style message")
Output:
Index ¶
- Constants
- Variables
- func AddStyle(name string, s Style)
- func AddTheme(name string, style Style)
- func ApplyTag(tag string, a ...interface{}) string
- func Basic2hex(val uint8) string
- func Basic2nameMap() map[uint8]string
- func Bg2Fg(val uint8) uint8
- func Bluef(format string, a ...interface{})
- func Blueln(a ...interface{})
- func Bluep(a ...interface{})
- func C256ToRgb(val uint8) (rgb []uint8)
- func C256ToRgbV1(val uint8) (rgb []uint8)
- func ClearCode(str string) string
- func ClearTag(s string) string
- func Colors2code(colors ...Color) string
- func Cyanf(format string, a ...interface{})
- func Cyanln(a ...interface{})
- func Cyanp(a ...interface{})
- func Disable() bool
- func Errorf(format string, a ...interface{})
- func Errorln(a ...interface{})
- func Errorp(a ...interface{})
- func Fg2Bg(val uint8) uint8
- func ForceColor() terminfo.ColorLevel
- func ForceOpenColor() terminfo.ColorLevel
- func ForceSetColorLevel(level terminfo.ColorLevel) terminfo.ColorLevel
- func Fprint(w io.Writer, a ...interface{})
- func Fprintf(w io.Writer, format string, a ...interface{})
- func Fprintln(w io.Writer, a ...interface{})
- func GetColorTags() map[string]string
- func GetTagCode(name string) string
- func Grayf(format string, a ...interface{})
- func Grayln(a ...interface{})
- func Grayp(a ...interface{})
- func Greenf(format string, a ...interface{})
- func Greenln(a ...interface{})
- func Greenp(a ...interface{})
- func Hex2basic(hex string, asBg ...bool) uint8
- func Hex2rgb(hex string) []int
- func HexToRGB(hex string) []int
- func HexToRgb(hex string) (rgb []int)
- func HslIntToRgb(h, s, l int) (rgb []uint8)
- func HslToRgb(h, s, l float64) (rgb []uint8)
- func HsvToRgb(h, s, v int) (rgb []uint8)
- func Infof(format string, a ...interface{})
- func Infoln(a ...interface{})
- func Infop(a ...interface{})
- func InnerErrs() []error
- func IsConsole(w io.Writer) bool
- func IsDefinedTag(name string) bool
- func IsLikeInCmd() booldeprecated
- func IsMSys() bool
- func IsSupport16Color() bool
- func IsSupport256Color() bool
- func IsSupportColor() bool
- func IsSupportRGBColor() bool
- func IsSupportTrueColor() bool
- func IsTerminal(fd uintptr) bool
- func IsWindows() bool
- func Lprint(l *log.Logger, a ...interface{})
- func Magentaf(format string, a ...interface{})
- func Magentaln(a ...interface{})
- func Magentap(a ...interface{})
- func NotRenderTag()
- func ParseCodeFromAttr(attr string) (code string)
- func Print(a ...interface{})
- func Printf(format string, a ...interface{})
- func Println(a ...interface{})
- func Redf(format string, a ...interface{})
- func Redln(a ...interface{})
- func Redp(a ...interface{})
- func Render(a ...interface{}) string
- func RenderCode(code string, args ...interface{}) string
- func RenderString(code string, str string) string
- func RenderWithSpaces(code string, args ...interface{}) string
- func ReplaceTag(str string) string
- func Reset() (int, error)
- func ResetOptions()
- func ResetOutput()
- func ResetTerminal() error
- func Rgb2ansi(r, g, b uint8, isBg bool) uint8
- func Rgb2basic(r, g, b uint8, isBg bool) uint8
- func Rgb2hex(rgb []int) string
- func Rgb2short(r, g, b uint8) uint8
- func RgbTo256(r, g, b uint8) uint8
- func RgbTo256Table() map[string]uint8
- func RgbToAnsi(r, g, b uint8, isBg bool) uint8
- func RgbToHex(rgb []int) string
- func RgbToHsl(r, g, b uint8) []float64
- func RgbToHslInt(r, g, b uint8) []int
- func Set(colors ...Color) (int, error)
- func SetOutput(w io.Writer)
- func SetTerminal(code string) error
- func Sprint(a ...interface{}) string
- func Sprintf(format string, a ...interface{}) string
- func String(s string) string
- func Successf(format string, a ...interface{})
- func Successln(a ...interface{})
- func Successp(a ...interface{})
- func Support256Color() bool
- func SupportColor() bool
- func SupportTrueColor() bool
- func Text(s string) string
- func Warnf(format string, a ...interface{})
- func Warnln(a ...interface{})
- func Warnp(a ...interface{})
- func WrapTag(s string, tag string) string
- func Yellowf(format string, a ...interface{})
- func Yellowln(a ...interface{})
- func Yellowp(a ...interface{})
- type Basic
- type Bit8Color
- type Color
- func (c Color) C256() Color256
- func (c Color) Code() string
- func (c Color) Darken() Color
- func (c Color) IsValid() bool
- func (c Color) Light() Color
- func (c Color) Name() string
- func (c Color) Print(args ...interface{})
- func (c Color) Printf(format string, a ...interface{})
- func (c Color) Println(a ...interface{})
- func (c Color) RGB() RGBColor
- func (c Color) Render(a ...interface{}) string
- func (c Color) Renderln(a ...interface{}) string
- func (c Color) Sprint(a ...interface{}) string
- func (c Color) Sprintf(format string, args ...interface{}) string
- func (c Color) String() string
- func (c Color) Text(message string) string
- func (c Color) ToBg() Color
- func (c Color) ToFg() Color
- type Color256
- func (c Color256) Basic() Color
- func (c Color256) C16() Color
- func (c Color256) Code() string
- func (c Color256) FullCode() string
- func (c Color256) IsBg() bool
- func (c Color256) IsEmpty() bool
- func (c Color256) IsFg() bool
- func (c Color256) Print(a ...interface{})
- func (c Color256) Printf(format string, a ...interface{})
- func (c Color256) Println(a ...interface{})
- func (c Color256) RGB() RGBColor
- func (c Color256) RGBColor() RGBColor
- func (c Color256) Reset() error
- func (c Color256) Set() error
- func (c Color256) Sprint(a ...interface{}) string
- func (c Color256) Sprintf(format string, a ...interface{}) string
- func (c Color256) String() string
- func (c Color256) ToBg() Color256
- func (c Color256) ToFg() Color256
- func (c Color256) Value() uint8
- type Level
- type Opts
- type Printer
- func (p *Printer) IsEmpty() bool
- func (p *Printer) Print(a ...interface{})
- func (p *Printer) Printf(format string, a ...interface{})
- func (p *Printer) Println(a ...interface{})
- func (p *Printer) Sprint(a ...interface{}) string
- func (p *Printer) Sprintf(format string, a ...interface{}) string
- func (p *Printer) String() string
- type PrinterFace
- type RGBColor
- func Bit24(r, g, b uint8, isBg ...bool) RGBColor
- func HEX(hex string, isBg ...bool) RGBColor
- func HSL(h, s, l float64, isBg ...bool) RGBColor
- func HSLInt(h, s, l int, isBg ...bool) RGBColor
- func Hex(hex string, isBg ...bool) RGBColor
- func Hsl(h, s, l float64, isBg ...bool) RGBColor
- func HslInt(h, s, l int, isBg ...bool) RGBColor
- func RGB(r, g, b uint8, isBg ...bool) RGBColor
- func RGBFromHEX(hex string, isBg ...bool) RGBColor
- func RGBFromSlice(rgb []uint8, isBg ...bool) RGBColor
- func RGBFromString(rgb string, isBg ...bool) RGBColor
- func Rgb(r, g, b uint8, isBg ...bool) RGBColor
- func RgbFromInt(r, g, b int, isBg ...bool) RGBColor
- func RgbFromInts(rgb []int, isBg ...bool) RGBColor
- func (c RGBColor) Basic() Color
- func (c RGBColor) C16() Color
- func (c RGBColor) C256() Color256
- func (c RGBColor) Code() string
- func (c RGBColor) Color() Color
- func (c RGBColor) FullCode() string
- func (c RGBColor) Hex() string
- func (c RGBColor) IsEmpty() bool
- func (c RGBColor) Print(a ...interface{})
- func (c RGBColor) Printf(format string, a ...interface{})
- func (c RGBColor) Println(a ...interface{})
- func (c RGBColor) Reset() error
- func (c RGBColor) RgbString() string
- func (c RGBColor) Set() error
- func (c RGBColor) Sprint(a ...interface{}) string
- func (c RGBColor) Sprintf(format string, a ...interface{}) string
- func (c RGBColor) String() string
- func (c RGBColor) Values() []int
- type RGBStyle
- func (s *RGBStyle) AddOpts(opts ...Color) *RGBStyle
- func (s *RGBStyle) Code() string
- func (s *RGBStyle) FullCode() string
- func (s *RGBStyle) IsEmpty() bool
- func (s *RGBStyle) Print(a ...interface{})
- func (s *RGBStyle) Printf(format string, a ...interface{})
- func (s *RGBStyle) Println(a ...interface{})
- func (s *RGBStyle) Set(fg, bg RGBColor, opts ...Color) *RGBStyle
- func (s *RGBStyle) SetBg(bg RGBColor) *RGBStyle
- func (s *RGBStyle) SetFg(fg RGBColor) *RGBStyle
- func (s *RGBStyle) SetOpts(opts Opts) *RGBStyle
- func (s *RGBStyle) Sprint(a ...interface{}) string
- func (s *RGBStyle) Sprintf(format string, a ...interface{}) string
- func (s *RGBStyle) String() string
- type Scheme
- func (s *Scheme) Errorf(format string, a ...interface{})
- func (s *Scheme) Errorln(v ...interface{})
- func (s *Scheme) Infof(format string, a ...interface{})
- func (s *Scheme) Infoln(v ...interface{})
- func (s *Scheme) Style(name string) Style
- func (s *Scheme) Warnf(format string, a ...interface{})
- func (s *Scheme) Warnln(v ...interface{})
- type SimplePrinter
- func (s *SimplePrinter) Errorf(format string, a ...interface{})
- func (s *SimplePrinter) Errorln(a ...interface{})
- func (s *SimplePrinter) Infof(format string, a ...interface{})
- func (s *SimplePrinter) Infoln(a ...interface{})
- func (s *SimplePrinter) Print(v ...interface{})
- func (s *SimplePrinter) Printf(format string, v ...interface{})
- func (s *SimplePrinter) Println(v ...interface{})
- func (s *SimplePrinter) Warnf(format string, a ...interface{})
- func (s *SimplePrinter) Warnln(a ...interface{})
- type Style
- func (s *Style) Add(cs ...Color)
- func (s Style) Code() string
- func (s Style) IsEmpty() bool
- func (s Style) Print(a ...interface{})
- func (s Style) Printf(format string, a ...interface{})
- func (s Style) Println(a ...interface{})
- func (s Style) Render(a ...interface{}) string
- func (s Style) Renderln(a ...interface{}) string
- func (s Style) Save(name string)
- func (s Style) Sprint(a ...interface{}) string
- func (s Style) Sprintf(format string, a ...interface{}) string
- func (s Style) String() string
- type Style256
- func (s *Style256) AddOpts(opts ...Color) *Style256
- func (s *Style256) Code() string
- func (s *Style256) Print(a ...interface{})
- func (s *Style256) Printf(format string, a ...interface{})
- func (s *Style256) Println(a ...interface{})
- func (s *Style256) Set(fgVal, bgVal uint8, opts ...Color) *Style256
- func (s *Style256) SetBg(bgVal uint8) *Style256
- func (s *Style256) SetFg(fgVal uint8) *Style256
- func (s *Style256) SetOpts(opts Opts) *Style256
- func (s *Style256) Sprint(a ...interface{}) string
- func (s *Style256) Sprintf(format string, a ...interface{}) string
- func (s *Style256) String() string
- type Tag
- type TagParser
- type Theme
Examples ¶
Constants ¶
const ( // StartSet chars StartSet = "\x1b[" // ResetSet close all properties. ResetSet = "\x1b[0m" // SettingTpl string. SettingTpl = "\x1b[%sm" // FullColorTpl for build color code FullColorTpl = "\x1b[%sm%s\x1b[0m" // CodeSuffix string for color code. CodeSuffix = "[0m" )
color render templates
ESC 操作的表示:
"\033"(Octal 8进制) = "\x1b"(Hexadecimal 16进制) = 27 (10进制)
const ( FgBase uint8 = 30 BgBase uint8 = 40 HiFgBase uint8 = 90 HiBgBase uint8 = 100 )
Base value for foreground/background color base: fg 30~37, bg 40~47 light: fg 90~97, bg 100~107
const ( Red = FgRed Cyan = FgCyan Gray = FgDarkGray // is light Black Blue = FgBlue Black = FgBlack Green = FgGreen White = FgWhite Yellow = FgYellow Magenta = FgMagenta Bold = OpBold Normal = FgDefault LightRed = FgLightRed LightCyan = FgLightCyan LightBlue = FgLightBlue LightGreen = FgLightGreen LightWhite = FgLightWhite LightYellow = FgLightYellow LightMagenta = FgLightMagenta HiRed = FgLightRed HiCyan = FgLightCyan HiBlue = FgLightBlue HiGreen = FgLightGreen HiWhite = FgLightWhite HiYellow = FgLightYellow HiMagenta = FgLightMagenta BgHiRed = BgLightRed BgHiCyan = BgLightCyan BgHiBlue = BgLightBlue BgHiGreen = BgLightGreen BgHiWhite = BgLightWhite BgHiYellow = BgLightYellow BgHiMagenta = BgLightMagenta )
There are basic and light foreground color aliases
const ( TplFg256 = "38;5;%d" TplBg256 = "48;5;%d" Fg256Pfx = "38;5;" Bg256Pfx = "48;5;" )
tpl for 8 bit 256 color(`2^8`)
format:
ESC[ … 38;5;<n> … m // 选择前景色 ESC[ … 48;5;<n> … m // 选择背景色
example:
fg "\x1b[38;5;242m" bg "\x1b[48;5;208m" both "\x1b[38;5;242;48;5;208m"
links:
https://zh.wikipedia.org/wiki/ANSI%E8%BD%AC%E4%B9%89%E5%BA%8F%E5%88%97#8位
const ( TplFgRGB = "38;2;%d;%d;%d" TplBgRGB = "48;2;%d;%d;%d" FgRGBPfx = "38;2;" BgRGBPfx = "48;2;" )
24 bit RGB color RGB:
R 0-255 G 0-255 B 0-255 R 00-FF G 00-FF B 00-FF (16进制)
Format:
ESC[ … 38;2;<r>;<g>;<b> … m // Select RGB foreground color ESC[ … 48;2;<r>;<g>;<b> … m // Choose RGB background color
links:
https://zh.wikipedia.org/wiki/ANSI%E8%BD%AC%E4%B9%89%E5%BA%8F%E5%88%97#24位
example:
fg: \x1b[38;2;30;144;255mMESSAGE\x1b[0m bg: \x1b[48;2;30;144;255mMESSAGE\x1b[0m both: \x1b[38;2;233;90;203;48;2;30;144;255mMESSAGE\x1b[0m
const ( AsFg uint8 = iota AsBg )
mark color is fg or bg.
const ( // MatchExpr regex to match color tags // // Notice: golang 不支持反向引用. 即不支持使用 \1 引用第一个匹配 ([a-z=;]+) // MatchExpr = `<([a-z=;]+)>(.*?)<\/\1>` // 所以调整一下 统一使用 `</>` 来结束标签,例如 "<info>some text</>" // // allow custom attrs, eg: "<fg=white;bg=blue;op=bold>content</>" // (?s:...) s - 让 "." 匹配换行 MatchExpr = `<([0-9a-zA-Z_=,;]+)>(?s:(.*?))<\/>` // AttrExpr regex to match custom color attributes // eg: "<fg=white;bg=blue;op=bold>content</>" AttrExpr = `(fg|bg|op)[\s]*=[\s]*([0-9a-zA-Z,]+);?` // StripExpr regex used for removing color tags // StripExpr = `<[\/]?[a-zA-Z=;]+>` // 随着上面的做一些调整 StripExpr = `<[\/]?[0-9a-zA-Z_=,;]*>` )
output colored text like use html tag. (not support windows cmd)
const ( LevelNo = terminfo.ColorLevelNone // not support color. Level16 = terminfo.ColorLevelBasic // basic - 3/4 bit color supported Level256 = terminfo.ColorLevelHundreds // hundreds - 8-bit color supported LevelRgb = terminfo.ColorLevelMillions // millions - (24 bit)true color supported )
terminal color available level alias of the terminfo.ColorLevel*
const CodeExpr = `\033\[[\d;?]+m`
CodeExpr regex to clear color codes eg "\033[1;36mText\x1b[0m"
Variables ¶
var ( // Enable switch color render and display // // NOTICE: // if ENV: NO_COLOR is not empty, will disable color render. Enable = os.Getenv("NO_COLOR") == "" // RenderTag render HTML tag on call color.Xprint, color.PrintX RenderTag = true )
var ( // Info color style Info = &Theme{"info", Style{OpReset, FgGreen}} // Note color style Note = &Theme{"note", Style{OpBold, FgLightCyan}} // Warn color style Warn = &Theme{"warning", Style{OpBold, FgYellow}} // Light color style Light = &Theme{"light", Style{FgLightWhite, BgBlack}} // Error color style Error = &Theme{"error", Style{FgLightWhite, BgRed}} // Danger color style Danger = &Theme{"danger", Style{OpBold, FgRed}} // Debug color style Debug = &Theme{"debug", Style{OpReset, FgCyan}} // Notice color style Notice = &Theme{"notice", Style{OpBold, FgCyan}} // Comment color style Comment = &Theme{"comment", Style{OpReset, FgYellow}} // Success color style Success = &Theme{"success", Style{OpBold, FgGreen}} // Primary color style Primary = &Theme{"primary", Style{OpReset, FgBlue}} // Question color style Question = &Theme{"question", Style{OpReset, FgMagenta}} // Secondary color style Secondary = &Theme{"secondary", Style{FgDarkGray}} )
internal themes(like bootstrap style) Usage:
color.Info.Print("message") color.Info.Printf("a %s message", "test") color.Warn.Println("message") color.Error.Println("message")
var AllOptions = map[string]Color{ "reset": OpReset, "bold": OpBold, "fuzzy": OpFuzzy, "italic": OpItalic, "underscore": OpUnderscore, "blink": OpBlink, "reverse": OpReverse, "concealed": OpConcealed, }
AllOptions color options map
var BgColors = map[string]Color{ "black": BgBlack, "red": BgRed, "green": BgGreen, "yellow": BgYellow, "blue": BgBlue, "magenta": BgMagenta, "cyan": BgCyan, "white": BgWhite, "default": BgDefault, }
BgColors background colors map
var ExBgColors = map[string]Color{ "darkGray": BgDarkGray, "lightRed": BgLightRed, "lightGreen": BgLightGreen, "lightYellow": BgLightYellow, "lightBlue": BgLightBlue, "lightMagenta": BgLightMagenta, "lightCyan": BgLightCyan, "lightWhite": BgLightWhite, }
ExBgColors extra background colors map
var ExFgColors = map[string]Color{ "darkGray": FgDarkGray, "lightRed": FgLightRed, "lightGreen": FgLightGreen, "lightYellow": FgLightYellow, "lightBlue": FgLightBlue, "lightMagenta": FgLightMagenta, "lightCyan": FgLightCyan, "lightWhite": FgLightWhite, }
ExFgColors extra foreground colors map
var FgColors = map[string]Color{ "black": FgBlack, "red": FgRed, "green": FgGreen, "yellow": FgYellow, "blue": FgBlue, "magenta": FgMagenta, "cyan": FgCyan, "white": FgWhite, "default": FgDefault, }
FgColors foreground colors map
var Options = AllOptions
Options color options map
Deprecated: please use AllOptions instead.
var Styles = map[string]Style{ "info": {OpReset, FgGreen}, "note": {OpBold, FgLightCyan}, "light": {FgLightWhite, BgRed}, "error": {FgLightWhite, BgRed}, "danger": {OpBold, FgRed}, "notice": {OpBold, FgCyan}, "success": {OpBold, FgGreen}, "comment": {OpReset, FgMagenta}, "primary": {OpReset, FgBlue}, "warning": {OpBold, FgYellow}, "question": {OpReset, FgMagenta}, "secondary": {FgDarkGray}, }
Styles internal defined styles, like bootstrap styles. Usage:
color.Styles["info"].Println("message")
var Themes = map[string]*Theme{ "info": Info, "note": Note, "light": Light, "error": Error, "debug": Debug, "danger": Danger, "notice": Notice, "success": Success, "comment": Comment, "primary": Primary, "warning": Warn, "question": Question, "secondary": Secondary, }
Themes internal defined themes. Usage:
color.Themes["info"].Println("message")
Functions ¶
func C256ToRgbV1 ¶
C256ToRgbV1 convert an 256 color code to RGB numbers refer https://github.com/torvalds/linux/commit/cec5b2a97a11ade56a701e83044d0a2a984c67b4
func Colors2code ¶
Colors2code convert colors to code. return like "32;45;3"
func ForceOpenColor ¶
func ForceOpenColor() terminfo.ColorLevel
ForceOpenColor force open color render
func ForceSetColorLevel ¶
func ForceSetColorLevel(level terminfo.ColorLevel) terminfo.ColorLevel
ForceSetColorLevel force open color render
func Fprintf ¶
Fprintf print format and rendered messages to writer. Notice: will ignore print error
func HexToRgb ¶
HexToRgb convert hex color string to RGB numbers
Usage:
rgb := HexToRgb("ccc") // rgb: [204 204 204] rgb := HexToRgb("aabbcc") // rgb: [170 187 204] rgb := HexToRgb("#aabbcc") // rgb: [170 187 204] rgb := HexToRgb("0xad99c0") // rgb: [170 187 204]
func HslIntToRgb ¶
HslIntToRgb Converts an HSL color value to RGB Assumes h: 0-360, s: 0-100, l: 0-100 returns r, g, and b in the set [0, 255].
Usage:
HslIntToRgb(0, 100, 50) // red HslIntToRgb(120, 100, 50) // lime HslIntToRgb(120, 100, 25) // dark green HslIntToRgb(120, 100, 75) // light green
func HslToRgb ¶
HslToRgb Converts an HSL color value to RGB. Conversion formula adapted from http://en.wikipedia.org/wiki/HSL_color_space. Assumes h, s, and l are contained in the set [0, 1] returns r, g, and b in the set [0, 255].
Usage:
rgbVals := HslToRgb(0, 1, 0.5) // red
func HsvToRgb ¶
HsvToRgb Converts an HSL color value to RGB. Conversion formula adapted from https://en.wikipedia.org/wiki/HSL_and_HSV#HSV_to_RGB Assumes h: 0-360, s: 0-100, l: 0-100 returns r, g, and b in the set [0, 255].
func IsLikeInCmd
deprecated
func IsMSys ¶
func IsMSys() bool
IsMSys msys(MINGW64) environment, does not necessarily support color
func IsSupport16Color ¶
func IsSupport16Color() bool
IsSupport16Color check current console is support color.
NOTICE: The method will detect terminal info each times,
if only want get current color level, please direct call SupportColor() or TermColorLevel()
func IsSupport256Color ¶
func IsSupport256Color() bool
IsSupport256Color render check
NOTICE: The method will detect terminal info each times,
if only want to get current color level, please direct call SupportColor() or TermColorLevel()
func IsSupportColor ¶
func IsSupportColor() bool
IsSupportColor check current console is support color.
NOTICE: The method will detect terminal info each times,
if only want get current color level, please direct call SupportColor() or TermColorLevel()
func IsSupportRGBColor ¶
func IsSupportRGBColor() bool
IsSupportRGBColor check. alias of the IsSupportTrueColor()
NOTICE: The method will detect terminal info each times,
if only want get current color level, please direct call SupportColor() or TermColorLevel()
func IsSupportTrueColor ¶
func IsSupportTrueColor() bool
IsSupportTrueColor render check.
NOTICE: The method will detect terminal info each times,
if only want get current color level, please direct call SupportColor() or TermColorLevel()
ENV: "COLORTERM=truecolor" "COLORTERM=24bit"
func IsTerminal ¶
IsTerminal returns true if the given file descriptor is a terminal.
Usage:
IsTerminal(os.Stdout.Fd())
func Lprint ¶
Lprint passes colored messages to a log.Logger for printing. Notice: should be goroutine safe
func Magentaf ¶
func Magentaf(format string, a ...interface{})
Magentaf print message with Magenta color
func ParseCodeFromAttr ¶
ParseCodeFromAttr parse color attributes.
attr format:
// VALUE please see var: FgColors, BgColors, AllOptions "fg=VALUE;bg=VALUE;op=VALUE"
16 color:
"fg=yellow" "bg=red" "op=bold,underscore" // option is allow multi value "fg=white;bg=blue;op=bold" "fg=white;op=bold,underscore"
256 color:
"fg=167" "fg=167;bg=23" "fg=167;bg=23;op=bold"
True color:
// hex "fg=fc1cac" "fg=fc1cac;bg=c2c3c4" // r,g,b "fg=23,45,214" "fg=23,45,214;bg=109,99,88"
func Render ¶
func Render(a ...interface{}) string
Render parse color tags, return rendered string.
Usage:
text := Render("<info>hello</> <cyan>world</>!") fmt.Println(text)
func RenderCode ¶
RenderCode render message by color code.
Usage:
msg := RenderCode("3;32;45", "some", "message")
func RenderString ¶
RenderString render a string with color code.
Usage:
msg := RenderString("3;32;45", "a message")
func RenderWithSpaces ¶
RenderWithSpaces Render code with spaces. If the number of args is > 1, a space will be added between the args
func ReplaceTag ¶
ReplaceTag parse string, replace color tag and return rendered string
func RgbToAnsi ¶
RgbToAnsi convert RGB-code to 16-code refer https://github.com/radareorg/radare2/blob/master/libr/cons/rgb.c#L249-L271
func RgbToHex ¶
RgbToHex convert RGB-code to hex-code
Usage:
hex := RgbToHex([]int{170, 187, 204}) // hex: "aabbcc"
func RgbToHsl ¶
RgbToHsl Converts an RGB color value to HSL. Conversion formula
adapted from http://en.wikipedia.org/wiki/HSL_color_space.
Assumes r, g, and b are contained in the set [0, 255] and returns h, s, and l in the set [0, 1].
func RgbToHslInt ¶
RgbToHslInt Converts an RGB color value to HSL. Conversion formula Assumes r, g, and b are contained in the set [0, 255] and returns [h,s,l] h: 0-360, s: 0-100, l: 0-100.
func Successf ¶
func Successf(format string, a ...interface{})
Successf print message with success style
func Support256Color ¶
func Support256Color() bool
Support256Color Whether the current environment supports 256-color output
func SupportColor ¶
func SupportColor() bool
SupportColor Whether the current environment supports color output
func SupportTrueColor ¶
func SupportTrueColor() bool
SupportTrueColor Whether the current environment supports (RGB)True-color output
Types ¶
type Color ¶
type Color uint8
Color Color16, 16 color value type 3(2^3=8) OR 4(2^4=16) bite color.
const ( FgBlack Color = iota + 30 FgRed FgGreen FgYellow FgBlue FgMagenta // 品红 FgCyan // 青色 FgWhite // FgDefault revert default FG FgDefault Color = 39 )
Foreground colors. basic foreground colors 30 - 37
const ( FgDarkGray Color = iota + 90 // 亮黑(灰) FgLightRed FgLightGreen FgLightYellow FgLightBlue FgLightMagenta FgLightCyan FgLightWhite // FgGray is alias of FgDarkGray FgGray Color = 90 // 亮黑(灰) )
Extra foreground color 90 - 97(非标准)
const ( BgBlack Color = iota + 40 BgRed BgGreen BgYellow // BgBrown like yellow BgBlue BgMagenta BgCyan BgWhite // BgDefault revert default BG BgDefault Color = 49 )
Background colors. basic background colors 40 - 47
const ( BgDarkGray Color = iota + 100 BgLightRed BgLightGreen BgLightYellow BgLightBlue BgLightMagenta BgLightCyan BgLightWhite // BgGray is alias of BgDarkGray BgGray Color = 100 )
Extra background color 100 - 107(非标准)
const ( OpReset Color = iota // 0 重置所有设置 OpBold // 1 加粗 OpFuzzy // 2 模糊(不是所有的终端仿真器都支持) OpItalic // 3 斜体(不是所有的终端仿真器都支持) OpUnderscore // 4 下划线 OpBlink // 5 闪烁 OpFastBlink // 6 快速闪烁(未广泛支持) OpReverse // 7 颠倒的 交换背景色与前景色 OpConcealed // 8 隐匿的 OpStrikethrough // 9 删除的,删除线(未广泛支持) )
Option settings
func (Color) Darken ¶
Darken current color. eg. 96(FgLightCyan) -> 36(FgCyan)
Usage:
cyan := LightCyan.Darken() cyan.Print("message")
func (Color) Light ¶
Light current color. eg: 36(FgCyan) -> 96(FgLightCyan).
Usage:
lightCyan := Cyan.Light() lightCyan.Print("message")
func (Color) Print ¶
func (c Color) Print(args ...interface{})
Print messages.
Usage:
color.Green.Print("message")
OR:
green := color.FgGreen.Print green("message")
func (Color) Printf ¶
Printf format and print messages.
Usage:
color.Cyan.Printf("string %s", "arg0")
func (Color) Render ¶
Render messages by color setting
Usage:
green := color.FgGreen.Render fmt.Println(green("message"))
func (Color) Renderln ¶
Renderln messages by color setting. like Println, will add spaces for each argument
Usage:
green := color.FgGreen.Renderln fmt.Println(green("message"))
type Color256 ¶
type Color256 [2]uint8
Color256 256 color (8 bit), uint8 range at 0 - 255
颜色值使用10进制和16进制都可 0x98 = 152
The color consists of two uint8:
0: color value 1: color type; Fg=0, Bg=1, >1: unset value
example:
fg color: [152, 0] bg color: [152, 1]
NOTICE: now support 256 color on windows CMD, PowerShell lint warn - Name starts with package name
func (Color256) Println ¶
func (c Color256) Println(a ...interface{})
Println print message with newline
type Level ¶
type Level = terminfo.ColorLevel
Level is the color level supported by a terminal.
func DetectColorLevel ¶
func DetectColorLevel() Level
DetectColorLevel for current env
NOTICE: The method will detect terminal info each times,
if only want to get current color level, please direct call SupportColor() or TermColorLevel()
func TermColorLevel ¶
func TermColorLevel() Level
TermColorLevel Get the currently supported color level
type Printer ¶
type Printer struct { // NoColor disable color. NoColor bool // Code color code string. eg "32;45;3" Code string }
Printer a generic color message printer.
Usage:
p := &Printer{Code: "32;45;3"} p.Print("message")
func (*Printer) Println ¶
func (p *Printer) Println(a ...interface{})
Println rendering colored messages with newline
type PrinterFace ¶
type PrinterFace interface { fmt.Stringer Sprint(a ...interface{}) string Sprintf(format string, a ...interface{}) string Print(a ...interface{}) Printf(format string, a ...interface{}) Println(a ...interface{}) }
PrinterFace interface
type RGBColor ¶
type RGBColor [4]uint8
RGBColor definition.
The first to third digits represent the color value. The last digit represents the foreground(0), background(1), >1 is unset value
Usage:
// 0, 1, 2 is R,G,B. // 3rd: Fg=0, Bg=1, >1: unset value RGBColor{30,144,255, 0} RGBColor{30,144,255, 1}
NOTICE: now support RGB color on Windows CMD, PowerShell
func HEX ¶
HEX create RGB color from a HEX color string.
Usage:
c := HEX("ccc") // rgb: [204 204 204] c := HEX("aabbcc") // rgb: [170 187 204] c := HEX("#aabbcc") c := HEX("0xaabbcc") c.Print("message")
func RGB ¶
RGB color create.
Usage:
c := RGB(30,144,255) c := RGB(30,144,255, true) c.Print("message")
func RGBFromHEX ¶
RGBFromHEX quick RGBColor from hex string, alias of HEX()
func RGBFromSlice ¶
RGBFromSlice quick RGBColor from slice
func RGBFromString ¶
RGBFromString create RGB color from a string. Support use color name in the {namedRgbMap}
Usage:
c := RGBFromString("170,187,204") c.Print("message") c := RGBFromString("brown") c.Print("message with color brown")
func RgbFromInt ¶
RgbFromInt create instance from int r,g,b value
func RgbFromInts ¶
RgbFromInts create instance from []int r,g,b value
func (RGBColor) Println ¶
func (c RGBColor) Println(a ...interface{})
Println print message with newline
type RGBStyle ¶
type RGBStyle struct { // Name of the style Name string // contains filtered or unexported fields }
RGBStyle supports set foreground and background color
All are composed of 4 digits uint8, the first three digits are the color value; The last bit is different from RGBColor, here it indicates whether the value is set.
1 Has been set ^1 Not set
func HEXStyle ¶
HEXStyle create a RGBStyle from HEX color string.
Usage:
s := HEXStyle("aabbcc", "eee") s.Print("message")
func NewRGBStyle ¶
NewRGBStyle create a RGBStyle.
func RGBStyleFromString ¶
RGBStyleFromString create a RGBStyle from color value string.
Usage:
s := RGBStyleFromString("170,187,204", "70,87,4") s.Print("message")
func (*RGBStyle) Println ¶
func (s *RGBStyle) Println(a ...interface{})
Println print message with newline
type Scheme ¶
Scheme struct
func NewDefaultScheme ¶
NewDefaultScheme create an defuault color Scheme
type SimplePrinter ¶
type SimplePrinter struct{}
SimplePrinter use for quick use color print on inject to struct
func (*SimplePrinter) Errorf ¶
func (s *SimplePrinter) Errorf(format string, a ...interface{})
Errorf message
func (*SimplePrinter) Infof ¶
func (s *SimplePrinter) Infof(format string, a ...interface{})
Infof message
func (*SimplePrinter) Printf ¶
func (s *SimplePrinter) Printf(format string, v ...interface{})
Printf message
func (*SimplePrinter) Warnf ¶
func (s *SimplePrinter) Warnf(format string, a ...interface{})
Warnf message
type Style ¶
type Style []Color
Style a 16 color style. can add: fg color, bg color, color options
Example:
color.Style{color.FgGreen}.Print("message")
func New ¶
New create a custom style
Usage:
color.New(color.FgGreen).Print("message") equals to: color.Style{color.FgGreen}.Print("message")
func (Style) Render ¶
Render render text Usage:
color.New(color.FgGreen).Render("text") color.New(color.FgGreen, color.BgBlack, color.OpBold).Render("text")
func (Style) Renderln ¶
Renderln render text line. like Println, will add spaces for each argument Usage:
color.New(color.FgGreen).Renderln("text", "more") color.New(color.FgGreen, color.BgBlack, color.OpBold).Render("text", "more")
type Style256 ¶
type Style256 struct { // Name of the style Name string // contains filtered or unexported fields }
Style256 definition
前/背景色 都是由两位uint8组成, 第一位是色彩值; 第二位与 Bit8Color 不一样的是,在这里表示是否设置了值 0 未设置 !=0 已设置
func S256 ¶
S256 create a color256 style
Usage:
s := color.S256() s := color.S256(132) // fg s := color.S256(132, 203) // fg and bg
func (*Style256) Println ¶
func (s *Style256) Println(a ...interface{})
Println print message with newline
type Tag ¶
type Tag string
Tag value is a defined style name Usage:
Tag("info").Println("message")
type TagParser ¶
type TagParser struct {
// contains filtered or unexported fields
}
TagParser struct
func (*TagParser) Parse ¶
Parse parse given string, replace color tag and return rendered string
Use built in tags:
<TAG_NAME>CONTENT</> // e.g: `<info>message</>`
Custom tag attributes:
`<fg=VALUE;bg=VALUE;op=VALUES>CONTENT</>` // e.g: `<fg=167;bg=232>wel</>`
func (*TagParser) ParseByEnv ¶
ParseByEnv parse given string. will check package setting.