diff options
author | daurnimator <quae@daurnimator.com> | 2017-04-26 17:55:37 +1000 |
---|---|---|
committer | daurnimator <quae@daurnimator.com> | 2017-04-26 18:06:57 +1000 |
commit | b688ef577a10e8b6f2cf948faaa8d1af70c7949c (patch) | |
tree | 0ff07d75f65442b92d8a95259b9ab6845e66b27a /src/lstrlib.js | |
parent | 53bd1fcc4b90f24427064419354ad07c552a93d5 (diff) | |
download | fengari-b688ef577a10e8b6f2cf948faaa8d1af70c7949c.tar.gz fengari-b688ef577a10e8b6f2cf948faaa8d1af70c7949c.tar.bz2 fengari-b688ef577a10e8b6f2cf948faaa8d1af70c7949c.zip |
Export lapi.js functions from lua.js
Diffstat (limited to 'src/lstrlib.js')
-rw-r--r-- | src/lstrlib.js | 132 |
1 files changed, 66 insertions, 66 deletions
diff --git a/src/lstrlib.js b/src/lstrlib.js index 2bfe2ee..9bbf26a 100644 --- a/src/lstrlib.js +++ b/src/lstrlib.js @@ -46,25 +46,25 @@ const str_sub = function(L) { if (start < 1) start = 1; if (end > l) end = l; if (start <= end) - lapi.lua_pushstring(L, ts.value.slice(start - 1, (start - 1) + (end - start + 1))); - else lapi.lua_pushliteral(L, ""); + lua.lua_pushstring(L, ts.value.slice(start - 1, (start - 1) + (end - start + 1))); + else lua.lua_pushliteral(L, ""); return 1; }; const str_len = function(L) { - lapi.lua_pushinteger(L, lauxlib.luaL_checkstring(L, 1).length); + lua.lua_pushinteger(L, lauxlib.luaL_checkstring(L, 1).length); return 1; }; const str_char = function(L) { - let n = lapi.lua_gettop(L); /* number of arguments */ + let n = lua.lua_gettop(L); /* number of arguments */ let p = []; for (let i = 1; i <= n; i++) { let c = lauxlib.luaL_checkinteger(L, i); lauxlib.luaL_argcheck(L, c >= 0 && c <= 255, "value out of range"); // Strings are 8-bit clean p.push(c); } - lapi.lua_pushstring(L, p); + lua.lua_pushstring(L, p); return 1; }; @@ -76,12 +76,12 @@ const writer = function(L, b, size, B) { const str_dump = function(L) { let b = []; - let strip = lapi.lua_toboolean(L, 2); + let strip = lua.lua_toboolean(L, 2); lauxlib.luaL_checktype(L, 1, lua.LUA_TFUNCTION); - lapi.lua_settop(L, 1); - if (lapi.lua_dump(L, writer, b, strip) !== 0) + lua.lua_settop(L, 1); + if (lua.lua_dump(L, writer, b, strip) !== 0) return lauxlib.luaL_error(L, lua.to_luastring("unable to dump given function")); - lapi.lua_pushstring(L, b); + lua.lua_pushstring(L, b); return 1; }; @@ -216,19 +216,19 @@ const checkdp = function(buff) { }; const addliteral = function(L, b, arg) { - switch(lapi.lua_type(L, arg)) { + switch(lua.lua_type(L, arg)) { case lua.LUA_TSTRING: { - let s = lapi.lua_tostring(L, arg); + let s = lua.lua_tostring(L, arg); addquoted(b, s, s.length); break; } case lua.LUA_TNUMBER: { - if (!lapi.lua_isinteger(L, arg)) { /* float? */ - let n = lapi.lua_tonumber(L, arg); /* write as hexa ('%a') */ + if (!lua.lua_isinteger(L, arg)) { /* float? */ + let n = lua.lua_tonumber(L, arg); /* write as hexa ('%a') */ concat(b, lua_number2strx(L, lua.to_luastring(`%${luaconf.LUA_INTEGER_FRMLEN}a`), n)); checkdp(b); /* ensure it uses a dot */ } else { /* integers */ - let n = lapi.lua_tointeger(L, arg); + let n = lua.lua_tointeger(L, arg); concat(b, lua.to_luastring(sprintf("%d", n))); } break; @@ -282,7 +282,7 @@ const addlenmod = function(form, lenmod) { }; const str_format = function(L) { - let top = lapi.lua_gettop(L); + let top = lua.lua_gettop(L); let arg = 1; let strfrmt = lauxlib.luaL_checkstring(L, arg); let b = []; @@ -340,17 +340,17 @@ const str_format = function(L) { let s = lauxlib.luaL_tolstring(L, arg); if (form.length <= 2 || form[2] === 0) { /* no modifiers? */ concat(b, s); /* keep entire string */ - lapi.lua_pop(L, 1); /* remove result from 'luaL_tolstring' */ + lua.lua_pop(L, 1); /* remove result from 'luaL_tolstring' */ } else { lauxlib.luaL_argcheck(L, s.length === strlen(s), arg, lua.to_luastring("string contains zeros", true)); if (form.indexOf('.'.charCodeAt(0)) < 0 && s.length >= 100) { /* no precision and string is too long to be formatted */ concat(b, s); /* keep entire string */ - lapi.lua_pop(L, 1); /* remove result from 'luaL_tolstring' */ + lua.lua_pop(L, 1); /* remove result from 'luaL_tolstring' */ } else { /* format the string into 'buff' */ // TODO: will failt if s is not valid UTF-8 concat(b, lua.to_luastring(sprintf(String.fromCharCode(...form), lobject.jsstring(s)))); - lapi.lua_pop(L, 1); /* remove result from 'luaL_tolstring' */ + lua.lua_pop(L, 1); /* remove result from 'luaL_tolstring' */ } } break; @@ -362,7 +362,7 @@ const str_format = function(L) { } } - lapi.lua_pushstring(L, b); + lua.lua_pushstring(L, b); return 1; }; @@ -569,7 +569,7 @@ const str_pack = function(L) { }; let arg = 1; /* current argument to pack */ let totalsize = 0; /* accumulate total size of result */ - lapi.lua_pushnil(L); /* mark to separate arguments from string buffer */ + lua.lua_pushnil(L); /* mark to separate arguments from string buffer */ while (fmt.s.length - 1 > 0) { let details = getdetails(h, totalsize, fmt); let opt = details.opt; @@ -634,24 +634,24 @@ const str_pack = function(L) { break; } } - lapi.lua_pushstring(L, b); + lua.lua_pushstring(L, b); return 1; }; const str_reverse = function(L) { - lapi.lua_pushstring(L, lauxlib.luaL_checkstring(L, 1).reverse()); + lua.lua_pushstring(L, lauxlib.luaL_checkstring(L, 1).reverse()); return 1; }; const str_lower = function(L) { // TODO: will fail on invalid UTF-8 - lapi.lua_pushstring(L, lua.to_luastring(lobject.jsstring(lauxlib.luaL_checkstring(L, 1)).toLowerCase())); + lua.lua_pushstring(L, lua.to_luastring(lobject.jsstring(lauxlib.luaL_checkstring(L, 1)).toLowerCase())); return 1; }; const str_upper = function(L) { // TODO: will fail on invalid UTF-8 - lapi.lua_pushstring(L, lua.to_luastring(lobject.jsstring(lauxlib.luaL_checkstring(L, 1)).toUpperCase())); + lua.lua_pushstring(L, lua.to_luastring(lobject.jsstring(lauxlib.luaL_checkstring(L, 1)).toUpperCase())); return 1; }; @@ -668,7 +668,7 @@ const str_rep = function(L) { r = r.concat(s.concat(sep)); r = r.concat(s); - lapi.lua_pushstring(L, n > 0 ? r : []); + lua.lua_pushstring(L, n > 0 ? r : []); return 1; }; @@ -687,7 +687,7 @@ const str_byte = function(L) { let n = (pose - posi) + 1; lauxlib.luaL_checkstack(L, n, lua.to_luastring("string slice too long", true)); for (let i = 0; i < n; i++) - lapi.lua_pushinteger(L, s[posi + i - 1]); + lua.lua_pushinteger(L, s[posi + i - 1]); return n; }; @@ -715,7 +715,7 @@ const str_packsize = function(L) { default: break; } } - lapi.lua_pushinteger(L, totalsize); + lua.lua_pushinteger(L, totalsize); return 1; }; @@ -786,28 +786,28 @@ const str_unpack = function(L) { case KOption.Kint: case KOption.Kuint: { let res = unpackint(L, data.slice(pos), h.islittle, size, opt === KOption.Kint); - lapi.lua_pushinteger(L, res); + lua.lua_pushinteger(L, res); break; } case KOption.Kfloat: { let res = unpacknum(L, data.slice(pos), h.islittle, size); - lapi.lua_pushnumber(L, res); + lua.lua_pushnumber(L, res); break; } case KOption.Kchar: { - lapi.lua_pushstring(L, data.slice(pos, pos + size)); + lua.lua_pushstring(L, data.slice(pos, pos + size)); break; } case KOption.Kstring: { let len = unpackint(L, data.slice(pos), h.islittle, size, 0); lauxlib.luaL_argcheck(L, pos + len + size <= ld, 2, lua.to_luastring("data string too short", true)); - lapi.lua_pushstring(L, data.slice(pos + size, pos + size + len)); + lua.lua_pushstring(L, data.slice(pos + size, pos + size + len)); pos += len; /* skip string */ break; } case KOption.Kzstr: { let len = data.slice(pos).indexOf(0); - lapi.lua_pushstring(L, data.slice(pos, pos + len)); + lua.lua_pushstring(L, data.slice(pos, pos + len)); pos += len + 1; /* skip string plus final '\0' */ break; } @@ -817,7 +817,7 @@ const str_unpack = function(L) { } pos += size; } - lapi.lua_pushinteger(L, pos + 1); /* next position */ + lua.lua_pushinteger(L, pos + 1); /* next position */ return n + 1; }; @@ -1112,16 +1112,16 @@ const match = function(ms, s, p) { const push_onecapture = function(ms, i, s, e) { if (i >= ms.level) { if (i === 0) - lapi.lua_pushlstring(ms.L, ms.src.slice(s), e - s); /* add whole match */ + lua.lua_pushlstring(ms.L, ms.src.slice(s), e - s); /* add whole match */ else lauxlib.luaL_error(ms.L, lua.to_luastring(`invalid capture index %${i + 1}`)); } else { let l = ms.capture[i].len; if (l === CAP_UNFINISHED) lauxlib.luaL_error(ms.L, lua.to_luastring("unfinished capture", true)); if (l === CAP_POSITION) - lapi.lua_pushinteger(ms.L, ms.src_init + 1); + lua.lua_pushinteger(ms.L, ms.src_init + 1); else - lapi.lua_pushlstring(ms.L, ms.src.slice(ms.capture[i].init), l); + lua.lua_pushlstring(ms.L, ms.src.slice(ms.capture[i].init), l); } }; @@ -1189,16 +1189,16 @@ const str_find_aux = function(L, find) { let init = posrelat(lauxlib.luaL_optinteger(L, 3, 1), ls); if (init < 1) init = 1; else if (init > ls + 1) { /* start after string's end? */ - lapi.lua_pushnil(L); /* cannot find anything */ + lua.lua_pushnil(L); /* cannot find anything */ return 1; } /* explicit request or no special characters? */ - if (find && (lapi.lua_toboolean(L, 4) || nospecials(p, lp))) { + if (find && (lua.lua_toboolean(L, 4) || nospecials(p, lp))) { /* do a plain search */ let f = find_subarray(s.slice(init - 1), p, 0); if (f > -1) { - lapi.lua_pushinteger(L, init + f); - lapi.lua_pushinteger(L, init + f + lp - 1); + lua.lua_pushinteger(L, init + f); + lua.lua_pushinteger(L, init + f + lp - 1); return 2; } } else { @@ -1214,15 +1214,15 @@ const str_find_aux = function(L, find) { reprepstate(ms); if ((res = match(ms, s1, 0)) !== null) { if (find) { - lapi.lua_pushinteger(L, s1 + 1); /* start */ - lapi.lua_pushinteger(L, res); /* end */ + lua.lua_pushinteger(L, s1 + 1); /* start */ + lua.lua_pushinteger(L, res); /* end */ return push_captures(ms, null, 0) + 2; } else return push_captures(ms, s1, res); } } while (s1++ < ms.src_end && !anchor); } - lapi.lua_pushnil(L); /* not found */ + lua.lua_pushnil(L); /* not found */ return 1; }; @@ -1245,7 +1245,7 @@ class GMatchState { } const gmatch_aux = function(L) { - let gm = lapi.lua_touserdata(L, lua.lua_upvalueindex(3)); + let gm = lua.lua_touserdata(L, lua.lua_upvalueindex(3)); gm.ms.L = L; for (let src = gm.src; src < gm.ms.src_end; src++) { reprepstate(gm.ms); @@ -1263,20 +1263,20 @@ const str_gmatch = function(L) { let p = lauxlib.luaL_checkstring(L, 2); let ls = s.length; let lp = p.length; - lapi.lua_settop(L, 2); /* keep them on closure to avoid being collected */ + lua.lua_settop(L, 2); /* keep them on closure to avoid being collected */ let gm = new GMatchState(); - lapi.lua_pushobject(L, gm); + lua.lua_pushobject(L, gm); prepstate(gm.ms, L, s, ls, p, lp); gm.src = 0; gm.p = 0; gm.lastmatch = null; - lapi.lua_pushcclosure(L, gmatch_aux, 3); + lua.lua_pushcclosure(L, gmatch_aux, 3); return 1; }; const add_s = function(ms, b, s, e) { let L = ms.L; - let news = lapi.lua_tostring(L, 3); + let news = lua.lua_tostring(L, 3); let l = news.length; for (let i = 0; i < l; i++) { if (news[i] !== L_ESC) @@ -1292,7 +1292,7 @@ const add_s = function(ms, b, s, e) { else { push_onecapture(ms, news[i] - '1'.charCodeAt(0), s, e); lauxlib.luaL_tolstring(L, -1); - lapi.lua_remove(L, -2); /* remove original value */ + lua.lua_remove(L, -2); /* remove original value */ lauxlib.luaL_addvalue(b); /* add capture to accumulated result */ } } @@ -1303,14 +1303,14 @@ const add_value = function(ms, b, s, e, tr) { let L = ms.L; switch (tr) { case lua.LUA_TFUNCTION: { - lapi.lua_pushvalue(L, 3); + lua.lua_pushvalue(L, 3); let n = push_captures(ms, s, e); - lapi.lua_call(L, n, 1); + lua.lua_call(L, n, 1); break; } case lua.LUA_TTABLE: { push_onecapture(ms, 0, s, e); - lapi.lua_gettable(L, 3); + lua.lua_gettable(L, 3); break; } default: { /* LUA_TNUMBER or LUA_TSTRING */ @@ -1318,10 +1318,10 @@ const add_value = function(ms, b, s, e, tr) { return; } } - if (!lapi.lua_toboolean(L, -1)) { /* nil or false? */ - lapi.lua_pop(L, 1); - lapi.lua_pushlstring(L, s, e - s); /* keep original text */ - } else if (!lapi.lua_isstring(L, -1)) + if (!lua.lua_toboolean(L, -1)) { /* nil or false? */ + lua.lua_pop(L, 1); + lua.lua_pushlstring(L, s, e - s); /* keep original text */ + } else if (!lua.lua_isstring(L, -1)) lauxlib.luaL_error(L, lua.to_luastring(`invalid replacement value (a ${lobject.jsstring(lauxlib.luaL_typename(L, -1))})`)); lauxlib.luaL_addvalue(b); /* add result to accumulator */ }; @@ -1332,7 +1332,7 @@ const str_gsub = function(L) { let p = lauxlib.luaL_checkstring(L, 2); /* pattern */ let lp = p.length; let lastmatch = null; /* end of last match */ - let tr = lapi.lua_type(L, 3); /* replacement type */ + let tr = lua.lua_type(L, 3); /* replacement type */ let max_s = lauxlib.luaL_optinteger(L, 4, srcl + 1); /* max replacements */ let anchor = p[0] === '^'.charCodeAt(0); let n = 0; /* replacement count */ @@ -1360,7 +1360,7 @@ const str_gsub = function(L) { } lauxlib.luaL_addlstring(b, ms.src.slice(src), ms.src_end - src); lauxlib.luaL_pushresult(b); - lapi.lua_pushinteger(L, n); /* number of substitutions */ + lua.lua_pushinteger(L, n); /* number of substitutions */ return 2; }; @@ -1385,14 +1385,14 @@ const strlib = { }; const createmetatable = function(L) { - lapi.lua_createtable(L, 0, 1); /* table to be metatable for strings */ - lapi.lua_pushliteral(L, ""); /* dummy string */ - lapi.lua_pushvalue(L, -2); /* copy table */ - lapi.lua_setmetatable(L, -2); /* set table as metatable for strings */ - lapi.lua_pop(L, 1); /* pop dummy string */ - lapi.lua_pushvalue(L, -2); /* get string library */ - lapi.lua_setfield(L, -2, lua.to_luastring("__index", true)); /* lobject.table_index = string */ - lapi.lua_pop(L, 1); /* pop metatable */ + lua.lua_createtable(L, 0, 1); /* table to be metatable for strings */ + lua.lua_pushliteral(L, ""); /* dummy string */ + lua.lua_pushvalue(L, -2); /* copy table */ + lua.lua_setmetatable(L, -2); /* set table as metatable for strings */ + lua.lua_pop(L, 1); /* pop dummy string */ + lua.lua_pushvalue(L, -2); /* get string library */ + lua.lua_setfield(L, -2, lua.to_luastring("__index", true)); /* lobject.table_index = string */ + lua.lua_pop(L, 1); /* pop metatable */ }; const luaopen_string = function(L) { |