VERSIÓ 1.4.5

- [NEW] Afegida funció "sub" al modul estandar "utf8"
This commit is contained in:
2026-03-18 10:33:02 +01:00
parent 9c895a518e
commit bf34c92e09
3 changed files with 58 additions and 1 deletions

47
lua.cpp
View File

@@ -993,8 +993,50 @@ extern "C" {
return 1; return 1;
} }
static int cpp_utf8_sub(lua_State *L) {
size_t slen;
const char *s = luaL_checklstring(L, 1, &slen);
int i = luaL_checkinteger(L, 2);
int j = luaL_optinteger(L, 3, -1);
// Get utf8.offset
lua_getglobal(L, "utf8");
lua_getfield(L, -1, "offset");
// Compute start byte index
lua_pushvalue(L, 1); // string
lua_pushinteger(L, i); // start index
lua_call(L, 2, 1); // utf8.offset(s, i)
lua_Integer start = lua_tointeger(L, -1);
lua_pop(L, 1);
if (start == 0) {
lua_pushliteral(L, "");
lua_pop(L, 1); // pop utf8 table
return 1;
}
// Compute end byte index (j+1)
lua_getfield(L, -1, "offset");
lua_pushvalue(L, 1);
lua_pushinteger(L, j + 1);
lua_call(L, 2, 1);
lua_Integer end = lua_tointeger(L, -1);
lua_pop(L, 2); // pop result + utf8 table
if (end == 0) {
// until end of string
lua_pushlstring(L, s + start - 1, slen - (start - 1));
return 1;
}
lua_pushlstring(L, s + start - 1, (end - 1) - (start - 1));
return 1;
}
} }
lua_State *L; lua_State *L;
bool is_playing = false; bool is_playing = false;
bool init_exists = false; bool init_exists = false;
@@ -1293,6 +1335,11 @@ void push_lua_funcs() {
lua_setglobal(L, "pad"); lua_setglobal(L, "pad");
lua_getglobal(L, "utf8"); // push utf8 table
lua_pushcfunction(L, cpp_utf8_sub); // push C function
lua_setfield(L, -2, "sub"); // utf8.sub = cpp_utf8_sub
lua_pop(L, 1); // pop utf8 table
} }
/* /*

View File

@@ -1,3 +1,3 @@
#pragma once #pragma once
#define MINI_VERSION "1.4.4" #define MINI_VERSION "1.4.5"

View File

@@ -901,3 +901,13 @@ key.RCTRL = 228
key.RSHIFT = 229 key.RSHIFT = 229
key.RALT = 230 key.RALT = 230
key.RGUI = 231 key.RGUI = 231
---@class utf8
utf8 = {}
---@param str string
---@param startchr number
---@param endchr number
---@return string
---Returns whether the specified keyboard key is down
function utf8.sub(str, startchr, endchr) end