1
0
mirror of https://github.com/taigrr/wtf synced 2025-01-18 04:03:14 -08:00
wtf/wtf/colors.go
2018-07-26 13:50:37 -07:00

443 lines
12 KiB
Go

package wtf
import (
"regexp"
"strconv"
"github.com/gdamore/tcell"
)
var colorMap = map[int]string{
0: "#000000",
1: "#800000",
2: "#008000",
3: "#808000",
4: "#000080",
5: "#800080",
6: "#008080",
7: "#c0c0c0",
8: "#808080",
9: "#ff0000",
10: "#00ff00",
11: "#ffff00",
12: "#0000ff",
13: "#ff00ff",
14: "#00ffff",
15: "#ffffff",
16: "#000000",
17: "#00005f",
18: "#000087",
19: "#0000af",
20: "#0000d7",
21: "#0000ff",
22: "#005f00",
23: "#005f5f",
24: "#005f87",
25: "#005faf",
26: "#005fd7",
27: "#005fff",
28: "#008700",
29: "#00875f",
30: "#008787",
31: "#0087af",
32: "#0087d7",
33: "#0087ff",
34: "#00af00",
35: "#00af5f",
36: "#00af87",
37: "#00afaf",
38: "#00afd7",
39: "#00afff",
40: "#00d700",
41: "#00d75f",
42: "#00d787",
43: "#00d7af",
44: "#00d7d7",
45: "#00d7ff",
46: "#00ff00",
47: "#00ff5f",
48: "#00ff87",
49: "#00ffaf",
50: "#00ffd7",
51: "#00ffff",
52: "#5f0000",
53: "#5f005f",
54: "#5f0087",
55: "#5f00af",
56: "#5f00d7",
57: "#5f00ff",
58: "#5f5f00",
59: "#5f5f5f",
60: "#5f5f87",
61: "#5f5faf",
62: "#5f5fd7",
63: "#5f5fff",
64: "#5f8700",
65: "#5f875f",
66: "#5f8787",
67: "#5f87af",
68: "#5f87d7",
69: "#5f87ff",
70: "#5faf00",
71: "#5faf5f",
72: "#5faf87",
73: "#5fafaf",
74: "#5fafd7",
75: "#5fafff",
76: "#5fd700",
77: "#5fd75f",
78: "#5fd787",
79: "#5fd7af",
80: "#5fd7d7",
81: "#5fd7ff",
82: "#5fff00",
83: "#5fff5f",
84: "#5fff87",
85: "#5fffaf",
86: "#5fffd7",
87: "#5fffff",
88: "#870000",
89: "#87005f",
90: "#870087",
91: "#8700af",
92: "#8700d7",
93: "#8700ff",
94: "#875f00",
95: "#875f5f",
96: "#875f87",
97: "#875faf",
98: "#875fd7",
99: "#875fff",
100: "#878700",
101: "#87875f",
102: "#878787",
103: "#8787af",
104: "#8787d7",
105: "#8787ff",
106: "#87af00",
107: "#87af5f",
108: "#87af87",
109: "#87afaf",
110: "#87afd7",
111: "#87afff",
112: "#87d700",
113: "#87d75f",
114: "#87d787",
115: "#87d7af",
116: "#87d7d7",
117: "#87d7ff",
118: "#87ff00",
119: "#87ff5f",
120: "#87ff87",
121: "#87ffaf",
122: "#87ffd7",
123: "#87ffff",
124: "#af0000",
125: "#af005f",
126: "#af0087",
127: "#af00af",
128: "#af00d7",
129: "#af00ff",
130: "#af5f00",
131: "#af5f5f",
132: "#af5f87",
133: "#af5faf",
134: "#af5fd7",
135: "#af5fff",
136: "#af8700",
137: "#af875f",
138: "#af8787",
139: "#af87af",
140: "#af87d7",
141: "#af87ff",
142: "#afaf00",
143: "#afaf5f",
144: "#afaf87",
145: "#afafaf",
146: "#afafd7",
147: "#afafff",
148: "#afd700",
149: "#afd75f",
150: "#afd787",
151: "#afd7af",
152: "#afd7d7",
153: "#afd7ff",
154: "#afff00",
155: "#afff5f",
156: "#afff87",
157: "#afffaf",
158: "#afffd7",
159: "#afffff",
160: "#d70000",
161: "#d7005f",
162: "#d70087",
163: "#d700af",
164: "#d700d7",
165: "#d700ff",
166: "#d75f00",
167: "#d75f5f",
168: "#d75f87",
169: "#d75faf",
170: "#d75fd7",
171: "#d75fff",
172: "#d78700",
173: "#d7875f",
174: "#d78787",
175: "#d787af",
176: "#d787d7",
177: "#d787ff",
178: "#d7af00",
179: "#d7af5f",
180: "#d7af87",
181: "#d7afaf",
182: "#d7afd7",
183: "#d7afff",
184: "#d7d700",
185: "#d7d75f",
186: "#d7d787",
187: "#d7d7af",
188: "#d7d7d7",
189: "#d7d7ff",
190: "#d7ff00",
191: "#d7ff5f",
192: "#d7ff87",
193: "#d7ffaf",
194: "#d7ffd7",
195: "#d7ffff",
196: "#ff0000",
197: "#ff005f",
198: "#ff0087",
199: "#ff00af",
200: "#ff00d7",
201: "#ff00ff",
202: "#ff5f00",
203: "#ff5f5f",
204: "#ff5f87",
205: "#ff5faf",
206: "#ff5fd7",
207: "#ff5fff",
208: "#ff8700",
209: "#ff875f",
210: "#ff8787",
211: "#ff87af",
212: "#ff87d7",
213: "#ff87ff",
214: "#ffaf00",
215: "#ffaf5f",
216: "#ffaf87",
217: "#ffafaf",
218: "#ffafd7",
219: "#ffafff",
220: "#ffd700",
221: "#ffd75f",
222: "#ffd787",
223: "#ffd7af",
224: "#ffd7d7",
225: "#ffd7ff",
226: "#ffff00",
227: "#ffff5f",
228: "#ffff87",
229: "#ffffaf",
230: "#ffffd7",
231: "#ffffff",
232: "#080808",
233: "#121212",
234: "#1c1c1c",
235: "#262626",
236: "#303030",
237: "#3a3a3a",
238: "#444444",
239: "#4e4e4e",
240: "#585858",
241: "#626262",
242: "#6c6c6c",
243: "#767676",
244: "#808080",
245: "#8a8a8a",
246: "#949494",
247: "#9e9e9e",
248: "#a8a8a8",
249: "#b2b2b2",
250: "#bcbcbc",
251: "#c6c6c6",
252: "#d0d0d0",
253: "#dadada",
254: "#e4e4e4",
255: "#eeeeee",
}
var colors = map[string]tcell.Color{
"aliceblue": tcell.ColorAliceBlue,
"antiquewhite": tcell.ColorAntiqueWhite,
"aqua": tcell.ColorAqua,
"aquamarine": tcell.ColorAquaMarine,
"azure": tcell.ColorAzure,
"beige": tcell.ColorBeige,
"bisque": tcell.ColorBisque,
"black": tcell.ColorBlack,
"blanchedalmond": tcell.ColorBlanchedAlmond,
"blue": tcell.ColorBlue,
"blueviolet": tcell.ColorBlueViolet,
"brown": tcell.ColorBrown,
"burlywood": tcell.ColorBurlyWood,
"cadetblue": tcell.ColorCadetBlue,
"chartreuse": tcell.ColorChartreuse,
"chocolate": tcell.ColorChocolate,
"coral": tcell.ColorCoral,
"cornflowerblue": tcell.ColorCornflowerBlue,
"cornsilk": tcell.ColorCornsilk,
"crimson": tcell.ColorCrimson,
"darkblue": tcell.ColorDarkBlue,
"darkcyan": tcell.ColorDarkCyan,
"darkgoldenrod": tcell.ColorDarkGoldenrod,
"darkgray": tcell.ColorDarkGray,
"darkgreen": tcell.ColorDarkGreen,
"darkkhaki": tcell.ColorDarkKhaki,
"darkmagenta": tcell.ColorDarkMagenta,
"darkolivegreen": tcell.ColorDarkOliveGreen,
"darkorange": tcell.ColorDarkOrange,
"darkorchid": tcell.ColorDarkOrchid,
"darkred": tcell.ColorDarkRed,
"darksalmon": tcell.ColorDarkSalmon,
"darkseagreen": tcell.ColorDarkSeaGreen,
"darkslateblue": tcell.ColorDarkSlateBlue,
"darkslategray": tcell.ColorDarkSlateGray,
"darkturquoise": tcell.ColorDarkTurquoise,
"darkviolet": tcell.ColorDarkViolet,
"deeppink": tcell.ColorDeepPink,
"deepskyblue": tcell.ColorDeepSkyBlue,
"dimgray": tcell.ColorDimGray,
"dodgerblue": tcell.ColorDodgerBlue,
"firebrick": tcell.ColorFireBrick,
"floralwhite": tcell.ColorFloralWhite,
"forestgreen": tcell.ColorForestGreen,
"fuchsia": tcell.ColorFuchsia,
"gainsboro": tcell.ColorGainsboro,
"ghostwhite": tcell.ColorGhostWhite,
"gold": tcell.ColorGold,
"goldenrod": tcell.ColorGoldenrod,
"gray": tcell.ColorGray,
"green": tcell.ColorGreen,
"greenyellow": tcell.ColorGreenYellow,
"grey": tcell.ColorGray,
"honeydew": tcell.ColorHoneydew,
"hotpink": tcell.ColorHotPink,
"indianred": tcell.ColorIndianRed,
"indigo": tcell.ColorIndigo,
"ivory": tcell.ColorIvory,
"khaki": tcell.ColorKhaki,
"lavender": tcell.ColorLavender,
"lavenderblush": tcell.ColorLavenderBlush,
"lawngreen": tcell.ColorLawnGreen,
"lemonchiffon": tcell.ColorLemonChiffon,
"lightblue": tcell.ColorLightBlue,
"lightcoral": tcell.ColorLightCoral,
"lightcyan": tcell.ColorLightCyan,
"lightgoldenrodyellow": tcell.ColorLightGoldenrodYellow,
"lightgray": tcell.ColorLightGray,
"lightgreen": tcell.ColorLightGreen,
"lightpink": tcell.ColorLightPink,
"lightsalmon": tcell.ColorLightSalmon,
"lightseagreen": tcell.ColorLightSeaGreen,
"lightskyblue": tcell.ColorLightSkyBlue,
"lightslategray": tcell.ColorLightSlateGray,
"lightsteelblue": tcell.ColorLightSteelBlue,
"lightyellow": tcell.ColorLightYellow,
"lime": tcell.ColorLime,
"limegreen": tcell.ColorLimeGreen,
"linen": tcell.ColorLinen,
"maroon": tcell.ColorMaroon,
"mediumaquamarine": tcell.ColorMediumAquamarine,
"mediumblue": tcell.ColorMediumBlue,
"mediumorchid": tcell.ColorMediumOrchid,
"mediumpurple": tcell.ColorMediumPurple,
"mediumseagreen": tcell.ColorMediumSeaGreen,
"mediumslateblue": tcell.ColorMediumSlateBlue,
"mediumspringgreen": tcell.ColorMediumSpringGreen,
"mediumturquoise": tcell.ColorMediumTurquoise,
"mediumvioletred": tcell.ColorMediumVioletRed,
"midnightblue": tcell.ColorMidnightBlue,
"mintcream": tcell.ColorMintCream,
"mistyrose": tcell.ColorMistyRose,
"moccasin": tcell.ColorMoccasin,
"navajowhite": tcell.ColorNavajoWhite,
"navy": tcell.ColorNavy,
"oldlace": tcell.ColorOldLace,
"olive": tcell.ColorOlive,
"olivedrab": tcell.ColorOliveDrab,
"orange": tcell.ColorOrange,
"orangered": tcell.ColorOrangeRed,
"orchid": tcell.ColorOrchid,
"palegoldenrod": tcell.ColorPaleGoldenrod,
"palegreen": tcell.ColorPaleGreen,
"paleturquoise": tcell.ColorPaleTurquoise,
"palevioletred": tcell.ColorPaleVioletRed,
"papayawhip": tcell.ColorPapayaWhip,
"peachpuff": tcell.ColorPeachPuff,
"peru": tcell.ColorPeru,
"pink": tcell.ColorPink,
"plum": tcell.ColorPlum,
"powderblue": tcell.ColorPowderBlue,
"purple": tcell.ColorPurple,
"rebeccapurple": tcell.ColorRebeccaPurple,
"red": tcell.ColorRed,
"rosybrown": tcell.ColorRosyBrown,
"royalblue": tcell.ColorRoyalBlue,
"saddlebrown": tcell.ColorSaddleBrown,
"salmon": tcell.ColorSalmon,
"sandybrown": tcell.ColorSandyBrown,
"seagreen": tcell.ColorSeaGreen,
"seashell": tcell.ColorSeashell,
"sienna": tcell.ColorSienna,
"silver": tcell.ColorSilver,
"skyblue": tcell.ColorSkyblue,
"slateblue": tcell.ColorSlateBlue,
"slategray": tcell.ColorSlateGray,
"snow": tcell.ColorSnow,
"springgreen": tcell.ColorSpringGreen,
"steelblue": tcell.ColorSteelBlue,
"tan": tcell.ColorTan,
"teal": tcell.ColorTeal,
"thistle": tcell.ColorThistle,
"tomato": tcell.ColorTomato,
"turquoise": tcell.ColorTurquoise,
"violet": tcell.ColorViolet,
"wheat": tcell.ColorWheat,
"white": tcell.ColorWhite,
"whitesmoke": tcell.ColorWhiteSmoke,
"yellow": tcell.ColorYellow,
"yellowgreen": tcell.ColorYellowGreen,
}
func ASCIItoTviewColors(text string) string {
boldRegExp := regexp.MustCompile(`\033\[1m`)
fgColorRegExp := regexp.MustCompile(`\033\[38;5;(?P<color>\d+)m`)
resColorRegExp := regexp.MustCompile(`\033\[0m`)
return resColorRegExp.ReplaceAllString(
boldRegExp.ReplaceAllString(
fgColorRegExp.ReplaceAllStringFunc(
text, replaceWithHexColorString), `[::b]`), `[-]`)
}
/* -------------------- Unexported Functions -------------------- */
func colorFor(label string) tcell.Color {
if _, ok := colors[label]; ok {
return colors[label]
} else {
return tcell.ColorGreen
}
}
func replaceWithHexColorString(substring string) string {
colorID, err := strconv.Atoi(substring[7 : len(substring)-1])
if err != nil {
return substring
}
hexColor := "[" + colorMap[colorID] + "]"
return hexColor
}