Skip to content

Commit 749ffab

Browse files
committed
Get object keys via blockly
1 parent 27f0bdc commit 749ffab

File tree

2 files changed

+37
-1
lines changed

2 files changed

+37
-1
lines changed

src/public/google-blockly/own/blocks_object.js

+34
Original file line numberDiff line numberDiff line change
@@ -360,3 +360,37 @@ Blockly.JavaScript['object_has_attr'] = function(block) {
360360

361361
return [`Object.prototype.hasOwnProperty.call(${obj}, ${attr})`, Blockly.JavaScript.ORDER_ATOMIC];
362362
};
363+
364+
// --- object keys --------------------------------------------------
365+
Blockly.Object.blocks['object_keys'] =
366+
'<block type="object_keys">'
367+
+ ' <value name="OBJECT">'
368+
+ ' <shadow type="get_object">'
369+
+ ' <field name="OID">Object ID</field>'
370+
+ ' </shadow>'
371+
+ ' </value>'
372+
+ '</block>';
373+
374+
Blockly.Blocks['object_keys'] = {
375+
init: function() {
376+
this.appendValueInput('OBJECT')
377+
.appendField(Blockly.Translate('object_keys'));
378+
379+
this.setInputsInline(true);
380+
this.setOutput(true, 'Array');
381+
382+
this.setColour(Blockly.Object.HUE);
383+
this.setTooltip(Blockly.Translate('object_keys_tooltip'));
384+
//this.setHelpUrl(getHelp('object_keys_help'));
385+
}
386+
};
387+
388+
Blockly.JavaScript['object_keys'] = function(block) {
389+
let obj = Blockly.JavaScript.valueToCode(block, 'OBJECT', Blockly.JavaScript.ORDER_ATOMIC);
390+
391+
if (!obj) {
392+
obj = '{}';
393+
}
394+
395+
return [`Object.keys(${obj})`, Blockly.JavaScript.ORDER_ATOMIC];
396+
};

src/public/google-blockly/own/blocks_words.js

+3-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)