From db79f407f9f3286f78c76b612f0e00f3514ff6f8 Mon Sep 17 00:00:00 2001 From: Nathan Baulch Date: Tue, 19 Apr 2022 10:27:11 +1000 Subject: [PATCH] Color option in cmd tool --- cmd/asciigraph/main.go | 18 +++++- color.go | 144 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 160 insertions(+), 2 deletions(-) diff --git a/cmd/asciigraph/main.go b/cmd/asciigraph/main.go index e1bf873..8f76130 100644 --- a/cmd/asciigraph/main.go +++ b/cmd/asciigraph/main.go @@ -2,6 +2,7 @@ package main import ( "bufio" + "errors" "flag" "fmt" "log" @@ -21,6 +22,7 @@ var ( enableRealTime bool realTimeDataBuffer int fps float64 = 24 + color asciigraph.AnsiColor ) func main() { @@ -39,6 +41,14 @@ func main() { flag.BoolVar(&enableRealTime, "r", enableRealTime, "enables `realtime` graph for data stream") flag.IntVar(&realTimeDataBuffer, "b", realTimeDataBuffer, "data points `buffer` when realtime graph enabled, default equal to `width`") flag.Float64Var(&fps, "f", fps, "set `fps` to control how frequently graph to be rendered when realtime graph enabled") + flag.Func("l", "`color` of the data line", func(str string) error { + if c, ok := asciigraph.ColorNames[str]; !ok { + return errors.New("unrecognized color") + } else { + color = c + return nil + } + }) flag.Parse() data := make([]float64, 0, 64) @@ -73,7 +83,9 @@ func main() { asciigraph.Width(int(width)), asciigraph.Offset(int(offset)), asciigraph.Precision(precision), - asciigraph.Caption(caption)) + asciigraph.Caption(caption), + asciigraph.SeriesColors(color), + ) asciigraph.Clear() fmt.Println(plot) nextFlushTime = time.Now().Add(flushInterval) @@ -94,7 +106,9 @@ func main() { asciigraph.Width(int(width)), asciigraph.Offset(int(offset)), asciigraph.Precision(precision), - asciigraph.Caption(caption)) + asciigraph.Caption(caption), + asciigraph.SeriesColors(color), + ) fmt.Println(plot) } diff --git a/color.go b/color.go index 2b72824..1c828e5 100644 --- a/color.go +++ b/color.go @@ -148,6 +148,150 @@ var ( YellowGreen AnsiColor = 149 ) +var ColorNames = map[string]AnsiColor{ + "default": Default, + "aliceblue": AliceBlue, + "antiquewhite": AntiqueWhite, + "aqua": Aqua, + "aquamarine": Aquamarine, + "azure": Azure, + "beige": Beige, + "bisque": Bisque, + "black": Black, + "blanchedalmond": BlanchedAlmond, + "blue": Blue, + "blueviolet": BlueViolet, + "brown": Brown, + "burlywood": BurlyWood, + "cadetblue": CadetBlue, + "chartreuse": Chartreuse, + "chocolate": Chocolate, + "coral": Coral, + "cornflowerblue": CornflowerBlue, + "cornsilk": Cornsilk, + "crimson": Crimson, + "cyan": Cyan, + "darkblue": DarkBlue, + "darkcyan": DarkCyan, + "darkgoldenrod": DarkGoldenrod, + "darkgray": DarkGray, + "darkgreen": DarkGreen, + "darkkhaki": DarkKhaki, + "darkmagenta": DarkMagenta, + "darkolivegreen": DarkOliveGreen, + "darkorange": DarkOrange, + "darkorchid": DarkOrchid, + "darkred": DarkRed, + "darksalmon": DarkSalmon, + "darkseagreen": DarkSeaGreen, + "darkslateblue": DarkSlateBlue, + "darkslategray": DarkSlateGray, + "darkturquoise": DarkTurquoise, + "darkviolet": DarkViolet, + "deeppink": DeepPink, + "deepskyblue": DeepSkyBlue, + "dimgray": DimGray, + "dodgerblue": DodgerBlue, + "firebrick": Firebrick, + "floralwhite": FloralWhite, + "forestgreen": ForestGreen, + "fuchsia": Fuchsia, + "gainsboro": Gainsboro, + "ghostwhite": GhostWhite, + "gold": Gold, + "goldenrod": Goldenrod, + "gray": Gray, + "green": Green, + "greenyellow": GreenYellow, + "honeydew": Honeydew, + "hotpink": HotPink, + "indianred": IndianRed, + "indigo": Indigo, + "ivory": Ivory, + "khaki": Khaki, + "lavender": Lavender, + "lavenderblush": LavenderBlush, + "lawngreen": LawnGreen, + "lemonchiffon": LemonChiffon, + "lightblue": LightBlue, + "lightcoral": LightCoral, + "lightcyan": LightCyan, + "lightgoldenrodyellow": LightGoldenrodYellow, + "lightgray": LightGray, + "lightgreen": LightGreen, + "lightpink": LightPink, + "lightsalmon": LightSalmon, + "lightseagreen": LightSeaGreen, + "lightskyblue": LightSkyBlue, + "lightslategray": LightSlateGray, + "lightsteelblue": LightSteelBlue, + "lightyellow": LightYellow, + "lime": Lime, + "limegreen": LimeGreen, + "linen": Linen, + "magenta": Magenta, + "maroon": Maroon, + "mediumaquamarine": MediumAquamarine, + "mediumblue": MediumBlue, + "mediumorchid": MediumOrchid, + "mediumpurple": MediumPurple, + "mediumseagreen": MediumSeaGreen, + "mediumslateblue": MediumSlateBlue, + "mediumspringgreen": MediumSpringGreen, + "mediumturquoise": MediumTurquoise, + "mediumvioletred": MediumVioletRed, + "midnightblue": MidnightBlue, + "mintcream": MintCream, + "mistyrose": MistyRose, + "moccasin": Moccasin, + "navajowhite": NavajoWhite, + "navy": Navy, + "oldlace": OldLace, + "olive": Olive, + "olivedrab": OliveDrab, + "orange": Orange, + "orangered": OrangeRed, + "orchid": Orchid, + "palegoldenrod": PaleGoldenrod, + "palegreen": PaleGreen, + "paleturquoise": PaleTurquoise, + "palevioletred": PaleVioletRed, + "papayawhip": PapayaWhip, + "peachpuff": PeachPuff, + "peru": Peru, + "pink": Pink, + "plum": Plum, + "powderblue": PowderBlue, + "purple": Purple, + "red": Red, + "rosybrown": RosyBrown, + "royalblue": RoyalBlue, + "saddlebrown": SaddleBrown, + "salmon": Salmon, + "sandybrown": SandyBrown, + "seagreen": SeaGreen, + "seashell": SeaShell, + "sienna": Sienna, + "silver": Silver, + "skyblue": SkyBlue, + "slateblue": SlateBlue, + "slategray": SlateGray, + "snow": Snow, + "springgreen": SpringGreen, + "steelblue": SteelBlue, + "tan": Tan, + "teal": Teal, + "thistle": Thistle, + "tomato": Tomato, + "turquoise": Turquoise, + "violet": Violet, + "wheat": Wheat, + "white": White, + "whitesmoke": WhiteSmoke, + "yellow": Yellow, + "yellowgreen": YellowGreen, +} + func (c AnsiColor) String() string { if c == Default { return "\x1b[0m"