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  }