capture.love/repl.lua

43 lines
890 B
Lua

-- beginnings of a repl
function eval(buf)
local f = load('return '..buf, 'REPL')
if f then
return run(f)
end
local f, err = load(buf, 'REPL')
if f then
return run(f)
else
return {err}
end
end
-- you could perform parse and run separately
-- usually because there's a side-effect like drawing that you want to control the timing of
function parse_into_exec_payload(buf)
local f = load('return '..buf, 'REPL')
if f then
exec_payload = f
return
end
local f, err = load(buf, 'REPL')
if f then
exec_payload = f
return
else
return {err}
end
end
-- based on https://github.com/hoelzro/lua-repl
function run(f)
local success, results = gather_results(xpcall(f, function(...) return debug.traceback() end))
return results
end
function gather_results(success, ...)
local n = select('#', ...)
return success, { n = n, ... }
end