1
0
Fork 0
mirror of https://github.com/Reuh/anselme.git synced 2025-10-27 16:49:31 +00:00

Fix LuaJIT compatibility

This commit is contained in:
Étienne Fildadut 2021-12-11 01:38:18 +01:00
parent fef498b3d7
commit 16d0bb8d7a
3 changed files with 33 additions and 13 deletions

View file

@ -99,6 +99,15 @@ types.anselme = {
end, end,
to_lua = function(val) to_lua = function(val)
local l = {} local l = {}
-- handle non-pair before pairs as LuaJIT's table.insert
-- will always insert after the last element even if there are some nil before unlike PUC
for _, v in ipairs(val) do
if v.type ~= "pair" then
local s, e = to_lua(v)
if not s and e then return s, e end
table.insert(l, s)
end
end
for _, v in ipairs(val) do for _, v in ipairs(val) do
if v.type == "pair" then if v.type == "pair" then
local k, ke = to_lua(v.value[1]) local k, ke = to_lua(v.value[1])
@ -106,10 +115,6 @@ types.anselme = {
local x, xe = to_lua(v.value[2]) local x, xe = to_lua(v.value[2])
if not x and xe then return x, xe end if not x and xe then return x, xe end
l[k] = x l[k] = x
else
local s, e = to_lua(v)
if not s and e then return s, e end
table.insert(l, s)
end end
end end
return l return l

View file

@ -144,7 +144,22 @@ else
for _, file in ipairs(files) do for _, file in ipairs(files) do
local filebase = file:match("^(.*)%.ans$") local filebase = file:match("^(.*)%.ans$")
local namespace = filebase:match("([^/]*)$") local namespace = filebase:match("([^/]*)$")
math.randomseed(0) -- simple random to get the same result across lua versions
local prev = 0
local function badrandom(a, b)
prev = (42424242424242 * prev + 242) % 2^32
return a + prev % (b-a+1)
end
function math.random(a, b)
if not a and not b then
return badrandom(0, 999) / 1000
elseif not b then
return badrandom(1, a)
else
return badrandom(a, b)
end
end
-- load vm
local vm = anselme() local vm = anselme()
vm:setaliases("seen", "checkpoint", "reached") vm:setaliases("seen", "checkpoint", "reached")
vm:loadfunction { vm:loadfunction {

View file

@ -4,11 +4,11 @@ _[20]={}
_[19]={} _[19]={}
_[18]={} _[18]={}
_[17]={} _[17]={}
_[16]={tags=_[21],text="a"} _[16]={text="a",tags=_[21]}
_[15]={tags=_[20],text="a"} _[15]={text="b",tags=_[20]}
_[14]={tags=_[19],text="b"} _[14]={text="b",tags=_[19]}
_[13]={tags=_[18],text="a"} _[13]={text="c",tags=_[18]}
_[12]={tags=_[17],text="b"} _[12]={text="c",tags=_[17]}
_[11]={_[16]} _[11]={_[16]}
_[10]={_[15]} _[10]={_[15]}
_[9]={_[14]} _[9]={_[14]}
@ -24,11 +24,11 @@ return {_[1],_[2],_[3],_[4],_[5],_[6]}
--[[ --[[
{ "text", { { { "text", { {
tags = {}, tags = {},
text = "b" text = "c"
} } } } } }
{ "text", { { { "text", { {
tags = {}, tags = {},
text = "a" text = "c"
} } } } } }
{ "text", { { { "text", { {
tags = {}, tags = {},
@ -36,7 +36,7 @@ return {_[1],_[2],_[3],_[4],_[5],_[6]}
} } } } } }
{ "text", { { { "text", { {
tags = {}, tags = {},
text = "a" text = "b"
} } } } } }
{ "text", { { { "text", { {
tags = {}, tags = {},