diff options
author | Hans Hagen <pragma@wxs.nl> | 2023-04-27 17:10:58 +0200 |
---|---|---|
committer | Context Git Mirror Bot <phg@phi-gamma.net> | 2023-04-27 17:10:58 +0200 |
commit | a0e79ce94348b934dcefc38133cd8fed08bd38e3 (patch) | |
tree | 8b98d5ba39a83fb9953d5bb8e92a95bb4ff00cc2 /source/luametatex/source/lua/lmttokenlib.c | |
parent | 09d2348c611e4e4eb348a36c76acaef546d6287e (diff) | |
download | context-a0e79ce94348b934dcefc38133cd8fed08bd38e3.tar.gz |
2023-04-27 16:57:00
Diffstat (limited to 'source/luametatex/source/lua/lmttokenlib.c')
-rw-r--r-- | source/luametatex/source/lua/lmttokenlib.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/source/luametatex/source/lua/lmttokenlib.c b/source/luametatex/source/lua/lmttokenlib.c index 1b50f18d2..c8f7f9039 100644 --- a/source/luametatex/source/lua/lmttokenlib.c +++ b/source/luametatex/source/lua/lmttokenlib.c @@ -1291,6 +1291,21 @@ static int tokenlib_scan_dimen(lua_State *L) } } +static int tokenlib_scan_posit(lua_State *L) +{ + saved_tex_scanner texstate = tokenlib_aux_save_tex_scanner(); + int eq = lua_toboolean(L, 1); + int fl = lua_toboolean(L, 1); + halfword val = tex_scan_posit(eq); + if (fl) { + lua_pushnumber(L, tex_posit_to_double(val)); + } else { + lua_pushinteger(L, val); + } + tokenlib_aux_unsave_tex_scanner(texstate); + return 1; +} + static int tokenlib_gobble_dimen(lua_State *L) { saved_tex_scanner texstate = tokenlib_aux_save_tex_scanner(); @@ -3597,6 +3612,7 @@ static const struct luaL_Reg tokenlib_function_list[] = { { "scanluacardinal", tokenlib_scan_luacardinal }, { "scanscale", tokenlib_scan_scale }, { "scandimen", tokenlib_scan_dimen }, + { "scanposit", tokenlib_scan_posit }, { "scanskip", tokenlib_scan_skip }, { "scanglue", tokenlib_scan_glue }, { "scantoks", tokenlib_scan_toks }, @@ -3867,6 +3883,10 @@ int lmt_function_call_by_category(int slot, int property, halfword *value) break; } case lua_value_float_code: + { + *value = tex_double_to_posit(lua_tonumber(L, -1)).v; + break; + } case lua_value_string_code: { category = lua_value_none_code; |