diff --git a/doc/en/scripting/builtins/libgui.md b/doc/en/scripting/builtins/libgui.md index 5ec2490f..eaaa589c 100644 --- a/doc/en/scripting/builtins/libgui.md +++ b/doc/en/scripting/builtins/libgui.md @@ -39,3 +39,14 @@ gui.get_locales_info() -> table of tables { ``` Returns information about all loaded locales (res/texts/\*). + +```lua +gui.clear_markup( + -- markup language ("md" - Markdown) + language: str, + -- text with markup + text: str +) -> str +``` + +Removes markup from text. diff --git a/doc/ru/scripting/builtins/libgui.md b/doc/ru/scripting/builtins/libgui.md index eb81cd5f..b613bd23 100644 --- a/doc/ru/scripting/builtins/libgui.md +++ b/doc/ru/scripting/builtins/libgui.md @@ -36,3 +36,14 @@ gui.get_locales_info() -> таблица таблиц где ``` Возвращает информацию о всех загруженных локалях (res/texts/\*). + +```lua +gui.clear_markup( + -- язык разметки ("md" - Markdown) + language: str, + -- текст с разметкой + text: str +) -> str +``` + +Удаляет разметку из текста. diff --git a/src/logic/scripting/lua/libs/libgui.cpp b/src/logic/scripting/lua/libs/libgui.cpp index 004e24e5..ade19062 100644 --- a/src/logic/scripting/lua/libs/libgui.cpp +++ b/src/logic/scripting/lua/libs/libgui.cpp @@ -12,6 +12,8 @@ #include "graphics/ui/elements/TrackBar.hpp" #include "graphics/ui/elements/UINode.hpp" #include "graphics/ui/gui_util.hpp" +#include "graphics/ui/markdown.hpp" +#include "graphics/core/Font.hpp" #include "items/Inventories.hpp" #include "util/stringutil.hpp" #include "world/Level.hpp" @@ -726,6 +728,16 @@ static int l_gui_getviewport(lua::State* L) { return lua::pushvec2(L, engine->getGUI()->getContainer()->getSize()); } +static int l_gui_clear_markup(lua::State* L) { + auto lang = lua::require_string(L, 1); + std::string text = lua::require_string(L, 2); + if (std::strcmp(lang, "md") == 0) { + auto [processed, _] = markdown::process(text, true); + text = std::move(processed); + } + return lua::pushstring(L, text); +} + const luaL_Reg guilib[] = { {"get_viewport", lua::wrap}, {"getattr", lua::wrap}, @@ -733,5 +745,6 @@ const luaL_Reg guilib[] = { {"get_env", lua::wrap}, {"str", lua::wrap}, {"get_locales_info", lua::wrap}, + {"clear_markup", lua::wrap}, {"__reindex", lua::wrap}, {NULL, NULL}};