aboutsummaryrefslogtreecommitdiff
path: root/colors.lua
blob: 046d49a2d38d8f78771812858f92a34c95faddbb (plain)
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