2013-04-27 43 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 

有些凌亂,但它的工作暫時。