1
0
mirror of https://github.com/natnat-mc/moonbuild synced 2026-05-28 06:09:41 +02:00
Files
moonbuild/moonbuild/compat/ctx.moon
T
Codinget c8670ab903 v2
2020-11-07 21:01:26 +01:00

30 lines
506 B
MoonScript

pcall = require 'moonbuild.compat.pcall'
runwithcontext = if setfenv
(fn, ctx, ...) ->
env = getfenv fn
setfenv fn, ctx
local data, ndata, ok
acc = (succ, ...) ->
ok = succ
if succ
data = {...}
ndata = select '#', ...
else
data = ...
acc pcall fn, ...
setfenv fn, env
if ok
unpack data, 1, ndata
else
error data
else
import dump from string
(fn, ctx, ...) ->
code = dump fn, false
fn = load code, 'runwithcontext', 'b', ctx
fn ...
{ :runwithcontext }