From 3aae7c3ce478c3d5ba5cb716a67bf117d0a48a84 Mon Sep 17 00:00:00 2001 From: jmoenig Date: Fri, 25 Jul 2014 14:35:36 +0200 Subject: new “JavaScript function” primitive MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Go figure… --- threads.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'threads.js') diff --git a/threads.js b/threads.js index 06beebc..d72d36a 100644 --- a/threads.js +++ b/threads.js @@ -83,7 +83,7 @@ ArgLabelMorph, localize, XML_Element, hex_sha512*/ // Global stuff //////////////////////////////////////////////////////// -modules.threads = '2014-July-24'; +modules.threads = '2014-July-25'; var ThreadManager; var Process; @@ -741,6 +741,13 @@ Process.prototype.reifyPredicate = function (topBlock, parameterNames) { return this.reify(topBlock, parameterNames); }; +Process.prototype.reportJSFunction = function (parmNames, body) { + return Function.apply( + Object.create(Function.prototype), + parmNames.asArray().concat([body]) + ); +}; + Process.prototype.doRun = function (context, args, isCustomBlock) { return this.evaluate(context, args, true, isCustomBlock); }; @@ -751,6 +758,9 @@ Process.prototype.evaluate = function ( isCommand ) { if (!context) {return null; } + if (context instanceof Function) { + return context.apply(this.homeContext.receiver, args.asArray()); + } if (context.isContinuation) { return this.runContinuation(context, args); } -- cgit v1.3.1