From 3e86d49a7bb0bb6b882bb85800354c3cdcc88106 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Sun, 27 Oct 2024 21:32:30 +0300 Subject: [PATCH 1/5] add utf8.upper, utf8.lower --- doc/en/scripting/builtins/libutf8.md | 6 ++++++ doc/ru/scripting/builtins/libutf8.md | 6 ++++++ src/logic/scripting/lua/libs/libutf8.cpp | 18 ++++++++++++++++++ 3 files changed, 30 insertions(+) diff --git a/doc/en/scripting/builtins/libutf8.md b/doc/en/scripting/builtins/libutf8.md index e7801f97..db8b31c5 100644 --- a/doc/en/scripting/builtins/libutf8.md +++ b/doc/en/scripting/builtins/libutf8.md @@ -18,4 +18,10 @@ utf8.codepoint(chars: str) -> int -- Returns a substring from position startchar to endchar inclusive utf8.sub(text: str, startchar: int, [optional] endchar: int) -> str + +-- Converts a string to uppercase +utf8.upper(text: str) -> str + +-- Converts a string to lowercase +utf8.lower(text: str) -> str ``` diff --git a/doc/ru/scripting/builtins/libutf8.md b/doc/ru/scripting/builtins/libutf8.md index b29bb403..50d64e72 100644 --- a/doc/ru/scripting/builtins/libutf8.md +++ b/doc/ru/scripting/builtins/libutf8.md @@ -18,4 +18,10 @@ utf8.codepoint(chars: str) -> int -- Возвращает подстроку от позиции startchar до endchar включительно utf8.sub(text: str, startchar: int, [опционально] endchar: int) -> str + +-- Переводит строку в вверхний регистр +utf8.upper(text: str) -> str + +-- Переводит строку в нижний регистр +utf8.lower(text: str) -> str ``` diff --git a/src/logic/scripting/lua/libs/libutf8.cpp b/src/logic/scripting/lua/libs/libutf8.cpp index 182f6295..23283ab4 100644 --- a/src/logic/scripting/lua/libs/libutf8.cpp +++ b/src/logic/scripting/lua/libs/libutf8.cpp @@ -63,11 +63,29 @@ static int l_sub(lua::State* L) { return lua::pushstring(L, util::u32str2str_utf8(string.substr(start, end))); } +static int l_upper(lua::State* L) { + auto string = util::str2u32str_utf8(lua::require_string(L, 1)); + for (auto& c : string) { + c = std::towupper(c); + } + return lua::pushstring(L, util::u32str2str_utf8(string)); +} + +static int l_lower(lua::State* L) { + auto string = util::str2u32str_utf8(lua::require_string(L, 1)); + for (auto& c : string) { + c = std::towlower(c); + } + return lua::pushstring(L, util::u32str2str_utf8(string)); +} + const luaL_Reg utf8lib[] = { {"tobytes", lua::wrap}, {"tostring", lua::wrap}, {"length", lua::wrap}, {"codepoint", lua::wrap}, {"sub", lua::wrap}, + {"upper", lua::wrap}, + {"lower", lua::wrap}, {NULL, NULL} }; From 329d4903d818998cf53d1c60b9962bbc76559f46 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Sun, 27 Oct 2024 21:39:46 +0300 Subject: [PATCH 2/5] replace string.lower, string.upper with utf8 versions --- res/scripts/stdmin.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/res/scripts/stdmin.lua b/res/scripts/stdmin.lua index e38a39ef..9a955fff 100644 --- a/res/scripts/stdmin.lua +++ b/res/scripts/stdmin.lua @@ -159,6 +159,9 @@ function string.trim_left(s, char) return string.match(s, "^" .. char .. "*(.+)$") or s end +string.lower = utf8.lower +string.upper = utf8.upper + local meta = getmetatable("") function meta:__index(key) From bb239c0f4928dd3167355b09c45a3b701f7be156 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Sun, 27 Oct 2024 21:44:15 +0300 Subject: [PATCH 3/5] add missing include --- src/logic/scripting/lua/libs/libutf8.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/logic/scripting/lua/libs/libutf8.cpp b/src/logic/scripting/lua/libs/libutf8.cpp index 23283ab4..13956dc1 100644 --- a/src/logic/scripting/lua/libs/libutf8.cpp +++ b/src/logic/scripting/lua/libs/libutf8.cpp @@ -1,6 +1,7 @@ #include "api_lua.hpp" #include +#include #include "../lua_custom_types.hpp" #include "util/stringutil.hpp" From 8ae6d89ed4a95ac0375892432e6d23ee16df0399 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Sun, 27 Oct 2024 21:54:25 +0300 Subject: [PATCH 4/5] fix msvc build again --- src/logic/scripting/lua/libs/libutf8.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/logic/scripting/lua/libs/libutf8.cpp b/src/logic/scripting/lua/libs/libutf8.cpp index 13956dc1..127ea464 100644 --- a/src/logic/scripting/lua/libs/libutf8.cpp +++ b/src/logic/scripting/lua/libs/libutf8.cpp @@ -1,7 +1,7 @@ #include "api_lua.hpp" #include -#include +#include #include "../lua_custom_types.hpp" #include "util/stringutil.hpp" From 176267e7ac31c31a7bf5bf63aaa8323c790daefb Mon Sep 17 00:00:00 2001 From: MihailRis Date: Sun, 27 Oct 2024 22:05:57 +0300 Subject: [PATCH 5/5] fix msvc build again --- src/logic/scripting/lua/libs/libutf8.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/logic/scripting/lua/libs/libutf8.cpp b/src/logic/scripting/lua/libs/libutf8.cpp index 127ea464..3512624f 100644 --- a/src/logic/scripting/lua/libs/libutf8.cpp +++ b/src/logic/scripting/lua/libs/libutf8.cpp @@ -1,7 +1,7 @@ #include "api_lua.hpp" #include -#include +#include #include "../lua_custom_types.hpp" #include "util/stringutil.hpp"