github.com/wtfutil/wtf@v0.43.0/wtf/colors.go (about) 1 package wtf 2 3 import ( 4 "regexp" 5 "strconv" 6 "strings" 7 8 "github.com/gdamore/tcell/v2" 9 ) 10 11 var colorMap = map[int]string{ 12 0: "#000000", 13 1: "#800000", 14 2: "#008000", 15 3: "#808000", 16 4: "#000080", 17 5: "#800080", 18 6: "#008080", 19 7: "#c0c0c0", 20 8: "#808080", 21 9: "#ff0000", 22 10: "#00ff00", 23 11: "#ffff00", 24 12: "#0000ff", 25 13: "#ff00ff", 26 14: "#00ffff", 27 15: "#ffffff", 28 16: "#000000", 29 17: "#00005f", 30 18: "#000087", 31 19: "#0000af", 32 20: "#0000d7", 33 21: "#0000ff", 34 22: "#005f00", 35 23: "#005f5f", 36 24: "#005f87", 37 25: "#005faf", 38 26: "#005fd7", 39 27: "#005fff", 40 28: "#008700", 41 29: "#00875f", 42 30: "#008787", 43 31: "#0087af", 44 32: "#0087d7", 45 33: "#0087ff", 46 34: "#00af00", 47 35: "#00af5f", 48 36: "#00af87", 49 37: "#00afaf", 50 38: "#00afd7", 51 39: "#00afff", 52 40: "#00d700", 53 41: "#00d75f", 54 42: "#00d787", 55 43: "#00d7af", 56 44: "#00d7d7", 57 45: "#00d7ff", 58 46: "#00ff00", 59 47: "#00ff5f", 60 48: "#00ff87", 61 49: "#00ffaf", 62 50: "#00ffd7", 63 51: "#00ffff", 64 52: "#5f0000", 65 53: "#5f005f", 66 54: "#5f0087", 67 55: "#5f00af", 68 56: "#5f00d7", 69 57: "#5f00ff", 70 58: "#5f5f00", 71 59: "#5f5f5f", 72 60: "#5f5f87", 73 61: "#5f5faf", 74 62: "#5f5fd7", 75 63: "#5f5fff", 76 64: "#5f8700", 77 65: "#5f875f", 78 66: "#5f8787", 79 67: "#5f87af", 80 68: "#5f87d7", 81 69: "#5f87ff", 82 70: "#5faf00", 83 71: "#5faf5f", 84 72: "#5faf87", 85 73: "#5fafaf", 86 74: "#5fafd7", 87 75: "#5fafff", 88 76: "#5fd700", 89 77: "#5fd75f", 90 78: "#5fd787", 91 79: "#5fd7af", 92 80: "#5fd7d7", 93 81: "#5fd7ff", 94 82: "#5fff00", 95 83: "#5fff5f", 96 84: "#5fff87", 97 85: "#5fffaf", 98 86: "#5fffd7", 99 87: "#5fffff", 100 88: "#870000", 101 89: "#87005f", 102 90: "#870087", 103 91: "#8700af", 104 92: "#8700d7", 105 93: "#8700ff", 106 94: "#875f00", 107 95: "#875f5f", 108 96: "#875f87", 109 97: "#875faf", 110 98: "#875fd7", 111 99: "#875fff", 112 100: "#878700", 113 101: "#87875f", 114 102: "#878787", 115 103: "#8787af", 116 104: "#8787d7", 117 105: "#8787ff", 118 106: "#87af00", 119 107: "#87af5f", 120 108: "#87af87", 121 109: "#87afaf", 122 110: "#87afd7", 123 111: "#87afff", 124 112: "#87d700", 125 113: "#87d75f", 126 114: "#87d787", 127 115: "#87d7af", 128 116: "#87d7d7", 129 117: "#87d7ff", 130 118: "#87ff00", 131 119: "#87ff5f", 132 120: "#87ff87", 133 121: "#87ffaf", 134 122: "#87ffd7", 135 123: "#87ffff", 136 124: "#af0000", 137 125: "#af005f", 138 126: "#af0087", 139 127: "#af00af", 140 128: "#af00d7", 141 129: "#af00ff", 142 130: "#af5f00", 143 131: "#af5f5f", 144 132: "#af5f87", 145 133: "#af5faf", 146 134: "#af5fd7", 147 135: "#af5fff", 148 136: "#af8700", 149 137: "#af875f", 150 138: "#af8787", 151 139: "#af87af", 152 140: "#af87d7", 153 141: "#af87ff", 154 142: "#afaf00", 155 143: "#afaf5f", 156 144: "#afaf87", 157 145: "#afafaf", 158 146: "#afafd7", 159 147: "#afafff", 160 148: "#afd700", 161 149: "#afd75f", 162 150: "#afd787", 163 151: "#afd7af", 164 152: "#afd7d7", 165 153: "#afd7ff", 166 154: "#afff00", 167 155: "#afff5f", 168 156: "#afff87", 169 157: "#afffaf", 170 158: "#afffd7", 171 159: "#afffff", 172 160: "#d70000", 173 161: "#d7005f", 174 162: "#d70087", 175 163: "#d700af", 176 164: "#d700d7", 177 165: "#d700ff", 178 166: "#d75f00", 179 167: "#d75f5f", 180 168: "#d75f87", 181 169: "#d75faf", 182 170: "#d75fd7", 183 171: "#d75fff", 184 172: "#d78700", 185 173: "#d7875f", 186 174: "#d78787", 187 175: "#d787af", 188 176: "#d787d7", 189 177: "#d787ff", 190 178: "#d7af00", 191 179: "#d7af5f", 192 180: "#d7af87", 193 181: "#d7afaf", 194 182: "#d7afd7", 195 183: "#d7afff", 196 184: "#d7d700", 197 185: "#d7d75f", 198 186: "#d7d787", 199 187: "#d7d7af", 200 188: "#d7d7d7", 201 189: "#d7d7ff", 202 190: "#d7ff00", 203 191: "#d7ff5f", 204 192: "#d7ff87", 205 193: "#d7ffaf", 206 194: "#d7ffd7", 207 195: "#d7ffff", 208 196: "#ff0000", 209 197: "#ff005f", 210 198: "#ff0087", 211 199: "#ff00af", 212 200: "#ff00d7", 213 201: "#ff00ff", 214 202: "#ff5f00", 215 203: "#ff5f5f", 216 204: "#ff5f87", 217 205: "#ff5faf", 218 206: "#ff5fd7", 219 207: "#ff5fff", 220 208: "#ff8700", 221 209: "#ff875f", 222 210: "#ff8787", 223 211: "#ff87af", 224 212: "#ff87d7", 225 213: "#ff87ff", 226 214: "#ffaf00", 227 215: "#ffaf5f", 228 216: "#ffaf87", 229 217: "#ffafaf", 230 218: "#ffafd7", 231 219: "#ffafff", 232 220: "#ffd700", 233 221: "#ffd75f", 234 222: "#ffd787", 235 223: "#ffd7af", 236 224: "#ffd7d7", 237 225: "#ffd7ff", 238 226: "#ffff00", 239 227: "#ffff5f", 240 228: "#ffff87", 241 229: "#ffffaf", 242 230: "#ffffd7", 243 231: "#ffffff", 244 232: "#080808", 245 233: "#121212", 246 234: "#1c1c1c", 247 235: "#262626", 248 236: "#303030", 249 237: "#3a3a3a", 250 238: "#444444", 251 239: "#4e4e4e", 252 240: "#585858", 253 241: "#626262", 254 242: "#6c6c6c", 255 243: "#767676", 256 244: "#808080", 257 245: "#8a8a8a", 258 246: "#949494", 259 247: "#9e9e9e", 260 248: "#a8a8a8", 261 249: "#b2b2b2", 262 250: "#bcbcbc", 263 251: "#c6c6c6", 264 252: "#d0d0d0", 265 253: "#dadada", 266 254: "#e4e4e4", 267 255: "#eeeeee", 268 } 269 270 func ASCIItoTviewColors(text string) string { 271 boldRegExp := regexp.MustCompile(`\033\[1m`) 272 fgColorRegExp := regexp.MustCompile(`\033\[38;5;(?P<color>\d+);*\d*m`) 273 resColorRegExp := regexp.MustCompile(`\033\[0m`) 274 275 return resColorRegExp.ReplaceAllString( 276 boldRegExp.ReplaceAllString( 277 fgColorRegExp.ReplaceAllStringFunc( 278 text, replaceWithHexColorString), `[::b]`), `[-]`) 279 } 280 281 func ColorFor(label string) tcell.Color { 282 return tcell.GetColor(label) 283 } 284 285 /* -------------------- Unexported Functions -------------------- */ 286 287 func replaceWithHexColorString(substring string) string { 288 colorID, err := strconv.Atoi(strings.Trim( 289 strings.Split(substring, ";")[2], "m")) 290 if err != nil { 291 return substring 292 } 293 294 hexColor := "[" + colorMap[colorID] + "]" 295 296 return hexColor 297 }