1 --[[ builtin/escapes.lua ]]--
2 -- code taken from minetest/builtin/common/misc_helpers.lua with modifications
5 package.loaded.escapes = escapes
7 escapes.ESCAPE_CHAR = string.char(0x1b)
9 function escapes.get_color_escape_sequence(color)
10 return escapes.ESCAPE_CHAR .. "(c@" .. color .. ")"
13 function escapes.get_background_escape_sequence(color)
14 return escapes.ESCAPE_CHAR .. "(b@" .. color .. ")"
17 function escapes.colorize(color, message)
18 local lines = tostring(message):split("\n", true)
19 local color_code = escapes.get_color_escape_sequence(color)
21 for i, line in ipairs(lines) do
22 lines[i] = color_code .. line
25 return table.concat(lines, "\n") .. escapes.get_color_escape_sequence("#ffffff")
28 function escapes.strip_foreground_colors(str)
29 return (str:gsub(escapes.ESCAPE_CHAR .. "%(c@[^)]+%)", ""))
32 function escapes.strip_background_colors(str)
33 return (str:gsub(escapes.ESCAPE_CHAR .. "%(b@[^)]+%)", ""))
36 function escapes.strip_colors(str)
37 return (str:gsub(escapes.ESCAPE_CHAR .. "%([bc]@[^)]+%)", ""))
40 function escapes.strip_translations(str)
42 :gsub(escapes.ESCAPE_CHAR .. "%(T@[^)]+%)", "")
43 :gsub(escapes.ESCAPE_CHAR .. "[TFE]", ""))
46 function escapes.strip_all(str)
47 str = escapes.strip_colors(str)
48 str = escapes.strip_translations(str)