diff --git a/builtin/common/misc_helpers.lua b/builtin/common/misc_helpers.lua index cf76fbde9..f7111680c 100644 --- a/builtin/common/misc_helpers.lua +++ b/builtin/common/misc_helpers.lua @@ -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 @@ -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 @@ -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 diff --git a/doc/client_lua_api.md b/doc/client_lua_api.md index f7a1094f0..d5ccef5d3 100644 --- a/doc/client_lua_api.md +++ b/doc/client_lua_api.md @@ -818,6 +818,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` ------------- diff --git a/doc/lua_api.txt b/doc/lua_api.txt index 2ac8f1077..72599cb7c 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -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 ---------------