diff --git a/src/lib/Toolbox/Toolbox.xml b/src/lib/Toolbox/Toolbox.xml index a80839b..9a81a0f 100644 --- a/src/lib/Toolbox/Toolbox.xml +++ b/src/lib/Toolbox/Toolbox.xml @@ -79,6 +79,7 @@ + diff --git a/src/resources/blocks/json.js b/src/resources/blocks/json.js index 5741e35..c59fa31 100644 --- a/src/resources/blocks/json.js +++ b/src/resources/blocks/json.js @@ -82,6 +82,35 @@ function register() { return [`(${X || "[]"}.push(${Y || '""'}))`, javascriptGenerator.ORDER_ATOMIC]; }) + // set + registerBlock(`${categoryPrefix}arrayset`, { + message0: 'set %1 to %2 in %3', + args0: [ + { + "type": "input_value", + "name": "X", + "check": "Number" + }, + { + "type": "input_value", + "name": "Y", + }, + { + "type": "input_value", + "name": "Z", + "check": "JSONArray" + }, + ], + output: "JSONArray", + inputsInline: true, + colour: categoryColor + }, (block) => { + const X = javascriptGenerator.valueToCode(block, 'X', javascriptGenerator.ORDER_ATOMIC); + const Y = javascriptGenerator.valueToCode(block, 'Y', javascriptGenerator.ORDER_ATOMIC); + const Z = javascriptGenerator.valueToCode(block, 'Z', javascriptGenerator.ORDER_ATOMIC); + return [`(() => { var z = ${Z}; z[${X}] = ${Y}; return z })()`, javascriptGenerator.ORDER_ATOMIC]; + }) + // get registerBlock(`${categoryPrefix}arrayget`, { message0: 'get %1 from array %2',