Wrap a JavaScript closure that allows you to pass to a Objective-C class and retrieve that later
var block = function(name, handler) {
var runtime = Mocha.alloc().init();
runtime.evalJSString("var " + name + " = " + handler);
return function() {
var args = [];
for (i = 0; i < arguments.length; i++) {
args.push(arguments[i]);
}
return runtime.callFunctionWithName_withArgumentsInArray_(name, args);
}
}
/* e.g.
var object = Class("Random", NSObject, (function() {
var _block, _value;
return {
"block": function() {
return _block(_value);
},
"setBlock:": function(value) {
_block = value;
},
"setValue:": function(value) {
_value = value;
}
};
})()).alloc().init();
var t = block("square", function(a) {
return a * a;
})
log(object.setBlock(t))
log(object.setValue(10));
log(object.block())
*/