Showing with 26 additions and 1 deletion.
  1. +14 −1 builtin/common/misc_helpers.lua
  2. +6 −0 doc/client_lua_api.md
  3. +6 −0 doc/lua_api.txt
15 changes: 14 additions & 1 deletion builtin/common/misc_helpers.lua
Original file line number Diff line number Diff line change
Expand Up @@ -640,6 +640,8 @@ if INIT == "client" or INIT == "mainmenu" then
end
end

local ESCAPE_CHAR = string.char(0x1b)

-- Client-sided mods don't have access to getbool
if core.setting_getbool and core.setting_getbool("disable_escape_sequences") then

Expand All @@ -657,7 +659,6 @@ if core.setting_getbool and core.setting_getbool("disable_escape_sequences") the

else

local ESCAPE_CHAR = string.char(0x1b)
function core.get_color_escape_sequence(color)
return ESCAPE_CHAR .. "(c@" .. color .. ")"
end
Expand All @@ -678,3 +679,15 @@ else
end

end

function core.strip_foreground_colors(str)
return (str:gsub(ESCAPE_CHAR .. "%(c@[^)]+%)", ""))
end

function core.strip_background_colors(str)
return (str:gsub(ESCAPE_CHAR .. "%(b@[^)]+%)", ""))
end

function core.strip_colors(str)
return (str:gsub(ESCAPE_CHAR .. "%([bc]@[^)]+%)", ""))
end
6 changes: 6 additions & 0 deletions doc/client_lua_api.md
Original file line number Diff line number Diff line change
Expand Up @@ -859,6 +859,12 @@ The following functions provide escape sequences:
* `color` is a ColorString
* The escape sequence sets the background of the whole text element to
`color`. Only defined for item descriptions and tooltips.
* `color.strip_foreground_colors(str)`
* Removes foreground colors added by `get_color_escape_sequence`.
* `color.strip_background_colors(str)`
* Removes background colors added by `get_background_escape_sequence`.
* `color.strip_colors(str)`
* Removes all color escape sequences.

`ColorString`
-------------
Expand Down
6 changes: 6 additions & 0 deletions doc/lua_api.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1872,6 +1872,12 @@ The following functions provide escape sequences:
* `color` is a ColorString
* The escape sequence sets the background of the whole text element to
`color`. Only defined for item descriptions and tooltips.
* `color.strip_foreground_colors(str)`
* Removes foreground colors added by `get_color_escape_sequence`.
* `color.strip_background_colors(str)`
* Removes background colors added by `get_background_escape_sequence`.
* `color.strip_colors(str)`
* Removes all color escape sequences.

Spatial Vectors
---------------
Expand Down