]> git.lizzy.rs Git - hydra-dragonfire.git/blob - builtin/escapes.lua
Add map component
[hydra-dragonfire.git] / builtin / escapes.lua
1 --[[ builtin/escapes.lua ]]--
2 -- code taken from minetest/builtin/common/misc_helpers.lua with modifications
3
4 local escapes = {}
5 package.loaded.escapes = escapes
6
7 escapes.ESCAPE_CHAR = string.char(0x1b)
8
9 function escapes.get_color_escape_sequence(color)
10         return escapes.ESCAPE_CHAR .. "(c@" .. color .. ")"
11 end
12
13 function escapes.get_background_escape_sequence(color)
14         return escapes.ESCAPE_CHAR .. "(b@" .. color .. ")"
15 end
16
17 function escapes.colorize(color, message)
18         local lines = tostring(message):split("\n", true)
19         local color_code = escapes.get_color_escape_sequence(color)
20
21         for i, line in ipairs(lines) do
22                 lines[i] = color_code .. line
23         end
24
25         return table.concat(lines, "\n") .. escapes.get_color_escape_sequence("#ffffff")
26 end
27
28 function escapes.strip_foreground_colors(str)
29         return (str:gsub(escapes.ESCAPE_CHAR .. "%(c@[^)]+%)", ""))
30 end
31
32 function escapes.strip_background_colors(str)
33         return (str:gsub(escapes.ESCAPE_CHAR .. "%(b@[^)]+%)", ""))
34 end
35
36 function escapes.strip_colors(str)
37         return (str:gsub(escapes.ESCAPE_CHAR .. "%([bc]@[^)]+%)", ""))
38 end
39
40 function escapes.strip_translations(str)
41         return (str
42                 :gsub(escapes.ESCAPE_CHAR .. "%(T@[^)]+%)", "")
43                 :gsub(escapes.ESCAPE_CHAR .. "[TFE]", ""))
44 end
45
46 function escapes.strip_all(str)
47         str = escapes.strip_colors(str)
48         str = escapes.strip_translations(str)
49         return str
50 end