2013-04-27 44 views
0

我有一种情况,我希望能够将某些变量传入和传出Coffeescript评估环境。这种情况是这样的:将变量传递给已评估的咖啡因

coffee = require('coffee-script'); 

exports.run = function(req,res){ 
    var program = req.query.program; 
    var inputs = req.query.inputs; 
    var outputs = coffee.eval(program); 
    res.json(outputs); 
}; 

基本上,inputs将是一个对象列表输入参数为用户的程序,outputs将通过那些回Web界面突出显示。

如何将变量和函数暴露给沙盒Coffeescript环境?

+0

查看[CoffeeScript REPL的'eval'函数](https://github.com/jashkenas/coffee-script/blob/5162472f16765ff85b41057993188955b947a8e3/src/repl.coffee#L23-L30)。希望它能给你一些不错的想法= D。但要小心,CoffeeScript.compile的'locals'参数不是一个记录的特性,所以它可能不是一个稳定的API的一部分;) – epidemian 2013-04-28 03:02:07

回答

0

我有一个解决方法,我暂时使用。我让用户的Coffeescript程序返回一个函数,然后进行评估。

输入:

{ x:5, y:7 } 

服务器端:

outputs = coffee.eval(program + '\nmain')(inputs,outputs); 

用户代码:

main = (i,o) -> 
    o.z = i.x*5 + i.y 

有些凌乱,但它的工作暂时。