From 1d16a9711594423c463132a5f2b340095fcee6bb Mon Sep 17 00:00:00 2001 From: Tim Mickel <tim.mickel@gmail.com> Date: Thu, 9 Jun 2016 13:28:50 -0400 Subject: [PATCH] Recursive evaluation for block arguments --- src/engine/execute.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/engine/execute.js b/src/engine/execute.js index ac2ccc28a..721ef0b73 100644 --- a/src/engine/execute.js +++ b/src/engine/execute.js @@ -98,8 +98,24 @@ var execute = function (sequencer, thread, blockId, isInput) { switchedStack = true; }; + // Generate values for arguments (inputs). var argValues = {}; + // Add all fields on this block to the argValues. + var fields = runtime.blocks.getFields(blockId); + for (var fieldName in fields) { + argValues[fieldName] = fields[fieldName]; + } + + // Recursively evaluate input blocks. + var inputs = runtime.blocks.getInputs(blockId); + for (var inputName in inputs) { + var input = inputs[inputName]; + var inputBlockId = input.block; + var result = execute(sequencer, thread, inputBlockId, true); + argValues[input.name] = result; + } + // Start showing run feedback in the editor. runtime.glowBlock(blockId, true);