-
Notifications
You must be signed in to change notification settings - Fork 0
/
colors.lua
82 lines (82 loc) · 1.48 KB
/
colors.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
if COLOR_ENABLED then
local codes = {
normal = 0,
reset = 0,
bright = 1,
bold = 1,
dim = 2,
italic = 3,
underscore = 4,
["slow blink"] = 5,
["fast blink"] = 6,
reverse = 7,
inverse = 7,
inverted = 7,
hidden = 8,
strikethrough = 9,
black = 30,
red = 31,
green = 32,
yellow = 33,
blue = 34,
magenta = 35,
cyan = 36,
white = 37,
on_black = 40,
on_red = 41,
on_green = 42,
on_yellow = 43,
on_blue = 44,
on_magenta = 45,
on_cyan = 46,
on_white = 47
}
local inverses = {
[0] = 0,
[1] = 22,
[2] = 22,
[3] = 23,
[4] = 24,
[5] = 25,
[6] = 25,
[7] = 27,
[8] = 28,
[9] = 29,
[30] = 39,
[31] = 39,
[32] = 39,
[33] = 39,
[34] = 39,
[35] = 39,
[36] = 39,
[37] = 39,
[38] = 39,
[40] = 49,
[41] = 49,
[42] = 49,
[43] = 49,
[44] = 49,
[45] = 49,
[46] = 49,
[47] = 49,
[48] = 49
}
return function(colors, s)
colors = colors:gsub("on (%a+)", function(self)
return codes['on_' .. self]
end)
colors = colors:gsub("(%a+)", function(self)
return codes[self]
end)
colors = colors:gsub(" ", ";")
local colorize = "\x1b[" .. colors .. 'm'
local reset = colorize:gsub("%d+", function(c)
return inverses[tonumber(c)]
end)
return s and (colorize .. s .. reset) or colorize
end
else
return function(colors, s)
return (s or '')
end
end