mirror of
https://github.com/scratchfoundation/scratch-vm.git
synced 2025-06-07 11:04:38 -04:00
Fix up adapter's domToBlock
This commit is contained in:
parent
0dfc72893c
commit
9fef9d7edd
1 changed files with 8 additions and 12 deletions
|
@ -35,7 +35,7 @@ function domToBlocks (blocksDOM) {
|
||||||
var block = blocksDOM[i];
|
var block = blocksDOM[i];
|
||||||
var tagName = block.name.toLowerCase();
|
var tagName = block.name.toLowerCase();
|
||||||
if (tagName === 'block') {
|
if (tagName === 'block') {
|
||||||
domToBlock(block, blocks, 0);
|
domToBlock(block, blocks, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Flatten blocks object into a list.
|
// Flatten blocks object into a list.
|
||||||
|
@ -50,24 +50,20 @@ function domToBlocks (blocksDOM) {
|
||||||
* Convert and an individual block DOM to the representation tree.
|
* Convert and an individual block DOM to the representation tree.
|
||||||
* Based on Blockly's `domToBlockHeadless_`.
|
* Based on Blockly's `domToBlockHeadless_`.
|
||||||
* @param {Element} blockDOM DOM tree for an individual block.
|
* @param {Element} blockDOM DOM tree for an individual block.
|
||||||
* @param {Number} treeDepth How far down the tree we have recursed.
|
* @param {Boolean} isTopBlock Whether blocks at this level are "top blocks."
|
||||||
* @param {Object} blocks Collection of blocks to add to.
|
* @param {Object} blocks Collection of blocks to add to.
|
||||||
*/
|
*/
|
||||||
function domToBlock (blockDOM, blocks, treeDepth) {
|
function domToBlock (blockDOM, blocks, isTopBlock) {
|
||||||
// Block skeleton.
|
// Block skeleton.
|
||||||
var block = {
|
var block = {
|
||||||
id: null, // Block ID
|
id: blockDOM.attribs.id, // Block ID
|
||||||
opcode: null, // Execution opcode, e.g., "event_whengreenflag".
|
opcode: blockDOM.attribs.type, // For execution, "event_whengreenflag".
|
||||||
inputs: {}, // Inputs to this block and the blocks they point to.
|
inputs: {}, // Inputs to this block and the blocks they point to.
|
||||||
fields: {}, // Fields on this block and their values.
|
fields: {}, // Fields on this block and their values.
|
||||||
next: null, // Next block in the stack, if one exists.
|
next: null, // Next block in the stack, if one exists.
|
||||||
topLevel: treeDepth == 0 // If this block starts a stack.
|
topLevel: isTopBlock // If this block starts a stack.
|
||||||
};
|
};
|
||||||
|
|
||||||
// Basic properties of the block from XML.
|
|
||||||
block.id = blockDOM.attribs.id;
|
|
||||||
block.opcode = blockDOM.attribs.type;
|
|
||||||
|
|
||||||
// Add the block to the representation tree.
|
// Add the block to the representation tree.
|
||||||
blocks[block.id] = block;
|
blocks[block.id] = block;
|
||||||
|
|
||||||
|
@ -110,7 +106,7 @@ function domToBlock (blockDOM, blocks, treeDepth) {
|
||||||
case 'value':
|
case 'value':
|
||||||
case 'statement':
|
case 'statement':
|
||||||
// Recursively generate block structure for input block.
|
// Recursively generate block structure for input block.
|
||||||
domToBlock(childBlockNode, blocks, treeDepth + 1);
|
domToBlock(childBlockNode, blocks, false);
|
||||||
// Link this block's input to the child block.
|
// Link this block's input to the child block.
|
||||||
var inputName = xmlChild.attribs.name;
|
var inputName = xmlChild.attribs.name;
|
||||||
block.inputs[inputName] = {
|
block.inputs[inputName] = {
|
||||||
|
@ -120,7 +116,7 @@ function domToBlock (blockDOM, blocks, treeDepth) {
|
||||||
break;
|
break;
|
||||||
case 'next':
|
case 'next':
|
||||||
// Recursively generate block structure for next block.
|
// Recursively generate block structure for next block.
|
||||||
domToBlock(childBlockNode, blocks, treeDepth + 1);
|
domToBlock(childBlockNode, blocks, false);
|
||||||
// Link next block to this block.
|
// Link next block to this block.
|
||||||
block.next = childBlockNode.attribs.id;
|
block.next = childBlockNode.attribs.id;
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue