howl.util.Sandbox
allows running a function with a specified environment
box = Sandbox env: {from_env: -> 'bar!'} assert.equal 'bar!', box -> from_env!
allows passing parameters to the function
box = Sandbox! f = (...) -> return ... assert.equal 'bar!', box(f, 'bar!')
.put allows modifiying the environment
box = Sandbox! box\put from_env: -> 'bar!' assert.equal 'bar!', box -> from_env!
allows global access by default
box = Sandbox! assert.equal table, box -> return table
disallows global access if options.no_globals is set
box = Sandbox no_globals: true assert.is_nil box -> return table
(when options.no_implicit_globals is set)
raises an error upon implicit global writes
box = Sandbox no_implicit_globals: true renegade = -> export frob = 'bar!' assert.raises 'implicit global', -> box renegade
(when options.no_implicit_globals is not set)
collects exports into .exports
box = Sandbox! box -> export foo = 'bar' assert.equal box.exports.foo, 'bar'
