From 24b04b5fca6fa167f709a3f69c3ed77b487417a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mislav=20Marohni=C4=87?= Date: Wed, 27 Nov 2019 19:16:53 +0100 Subject: [PATCH] Make use of ansi.ColorFunc Speed up repeated calls to color functions by using ansi.ColorFunc to create a closure per each color. https://godoc.org/github.com/mgutz/ansi#ColorFunc --- utils/color.go | 38 +++++++++++++------------------------- 1 file changed, 13 insertions(+), 25 deletions(-) diff --git a/utils/color.go b/utils/color.go index fb8479734..fd53d80e7 100644 --- a/utils/color.go +++ b/utils/color.go @@ -1,39 +1,27 @@ package utils import ( + "os" + "github.com/mattn/go-isatty" "github.com/mgutz/ansi" - "os" ) func makeColorFunc(color string) func(string) string { + cf := ansi.ColorFunc(color) return func(arg string) string { - output := arg if isatty.IsTerminal(os.Stdout.Fd()) { - output = ansi.Color(color+arg+ansi.Reset, "") + return cf(arg) } - - return output + return arg } } -var Black = makeColorFunc(ansi.Black) -var White = makeColorFunc(ansi.White) -var Magenta = makeColorFunc(ansi.Magenta) -var Cyan = makeColorFunc(ansi.Cyan) -var Red = makeColorFunc(ansi.Red) -var Yellow = makeColorFunc(ansi.Yellow) -var Blue = makeColorFunc(ansi.Blue) -var Green = makeColorFunc(ansi.Green) -var Gray = makeColorFunc(ansi.LightBlack) - -func Bold(arg string) string { - output := arg - if isatty.IsTerminal(os.Stdout.Fd()) { - // This is really annoying. If you just define Bold as ColorFunc("+b") it will properly bold but - // will not use the default color, resulting in black and probably unreadable text. This forces - // the default color before bolding. - output = ansi.Color(ansi.DefaultFG+arg+ansi.Reset, "+b") - } - return output -} +var Magenta = makeColorFunc("magenta") +var Cyan = makeColorFunc("cyan") +var Red = makeColorFunc("red") +var Yellow = makeColorFunc("yellow") +var Blue = makeColorFunc("blue") +var Green = makeColorFunc("green") +var Gray = makeColorFunc("black+h") +var Bold = makeColorFunc("default+b")