mirror of
https://github.com/google/blockly.git
synced 2026-01-06 08:30:13 +01:00
Add extra suffix when generating if/return block.
Also fix loops in Lua.
This commit is contained in:
@@ -40,7 +40,7 @@ Blockly.Dart['controls_repeat_ext'] = function(block) {
|
||||
Blockly.Dart.ORDER_ASSIGNMENT) || '0';
|
||||
}
|
||||
var branch = Blockly.Dart.statementToCode(block, 'DO');
|
||||
branch = Blockly.Dart.addLoopTrap(branch, block.id);
|
||||
branch = Blockly.Dart.addLoopTrap(branch, block);
|
||||
var code = '';
|
||||
var loopVar = Blockly.Dart.variableDB_.getDistinctName(
|
||||
'count', Blockly.Variables.NAME_TYPE);
|
||||
@@ -66,7 +66,7 @@ Blockly.Dart['controls_whileUntil'] = function(block) {
|
||||
until ? Blockly.Dart.ORDER_UNARY_PREFIX :
|
||||
Blockly.Dart.ORDER_NONE) || 'false';
|
||||
var branch = Blockly.Dart.statementToCode(block, 'DO');
|
||||
branch = Blockly.Dart.addLoopTrap(branch, block.id);
|
||||
branch = Blockly.Dart.addLoopTrap(branch, block);
|
||||
if (until) {
|
||||
argument0 = '!' + argument0;
|
||||
}
|
||||
@@ -84,7 +84,7 @@ Blockly.Dart['controls_for'] = function(block) {
|
||||
var increment = Blockly.Dart.valueToCode(block, 'BY',
|
||||
Blockly.Dart.ORDER_ASSIGNMENT) || '1';
|
||||
var branch = Blockly.Dart.statementToCode(block, 'DO');
|
||||
branch = Blockly.Dart.addLoopTrap(branch, block.id);
|
||||
branch = Blockly.Dart.addLoopTrap(branch, block);
|
||||
var code;
|
||||
if (Blockly.isNumber(argument0) && Blockly.isNumber(argument1) &&
|
||||
Blockly.isNumber(increment)) {
|
||||
@@ -145,7 +145,7 @@ Blockly.Dart['controls_forEach'] = function(block) {
|
||||
var argument0 = Blockly.Dart.valueToCode(block, 'LIST',
|
||||
Blockly.Dart.ORDER_ASSIGNMENT) || '[]';
|
||||
var branch = Blockly.Dart.statementToCode(block, 'DO');
|
||||
branch = Blockly.Dart.addLoopTrap(branch, block.id);
|
||||
branch = Blockly.Dart.addLoopTrap(branch, block);
|
||||
var code = 'for (var ' + variable0 + ' in ' + argument0 + ') {\n' +
|
||||
branch + '}\n';
|
||||
return code;
|
||||
|
||||
@@ -34,20 +34,19 @@ Blockly.Dart['procedures_defreturn'] = function(block) {
|
||||
var funcName = Blockly.Dart.variableDB_.getName(block.getFieldValue('NAME'),
|
||||
Blockly.Procedures.NAME_TYPE);
|
||||
var branch = Blockly.Dart.statementToCode(block, 'STACK');
|
||||
var id = block.id.replace(/\$/g, '$$$$'); // Issue 251.
|
||||
if (Blockly.Dart.STATEMENT_SUFFIX) {
|
||||
branch = Blockly.Dart.prefixLines(
|
||||
Blockly.Dart.STATEMENT_SUFFIX.replace(/%1/g, '\'' + id + '\''),
|
||||
Blockly.Dart.injectId(Blockly.Dart.STATEMENT_SUFFIX, block),
|
||||
Blockly.Dart.INDENT) + branch;
|
||||
}
|
||||
if (Blockly.Dart.INFINITE_LOOP_TRAP) {
|
||||
branch = Blockly.Dart.prefixLines(
|
||||
Blockly.Dart.INFINITE_LOOP_TRAP.replace(/%1/g, '\'' + id + '\''),
|
||||
Blockly.Dart.injectId(Blockly.Dart.INFINITE_LOOP_TRAP, block),
|
||||
Blockly.Dart.INDENT) + branch;
|
||||
}
|
||||
if (Blockly.Dart.STATEMENT_PREFIX) {
|
||||
branch = Blockly.Dart.prefixLines(
|
||||
Blockly.Dart.STATEMENT_PREFIX.replace(/%1/g, '\'' + id + '\''),
|
||||
Blockly.Dart.injectId(Blockly.Dart.STATEMENT_PREFIX, block),
|
||||
Blockly.Dart.INDENT) + branch;
|
||||
}
|
||||
var returnValue = Blockly.Dart.valueToCode(block, 'RETURN',
|
||||
@@ -104,6 +103,13 @@ Blockly.Dart['procedures_ifreturn'] = function(block) {
|
||||
var condition = Blockly.Dart.valueToCode(block, 'CONDITION',
|
||||
Blockly.Dart.ORDER_NONE) || 'false';
|
||||
var code = 'if (' + condition + ') {\n';
|
||||
if (Blockly.Dart.STATEMENT_SUFFIX) {
|
||||
// Inject any statement suffix here since the regular one at the end
|
||||
// will not get executed if the return is triggered.
|
||||
code += Blockly.Dart.prefixLines(
|
||||
Blockly.Dart.injectId(Blockly.Dart.STATEMENT_SUFFIX, block),
|
||||
Blockly.Dart.INDENT);
|
||||
}
|
||||
if (block.hasReturnValue_) {
|
||||
var value = Blockly.Dart.valueToCode(block, 'VALUE',
|
||||
Blockly.Dart.ORDER_NONE) || 'null';
|
||||
|
||||
@@ -40,7 +40,7 @@ Blockly.JavaScript['controls_repeat_ext'] = function(block) {
|
||||
Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
|
||||
}
|
||||
var branch = Blockly.JavaScript.statementToCode(block, 'DO');
|
||||
branch = Blockly.JavaScript.addLoopTrap(branch, block.id);
|
||||
branch = Blockly.JavaScript.addLoopTrap(branch, block);
|
||||
var code = '';
|
||||
var loopVar = Blockly.JavaScript.variableDB_.getDistinctName(
|
||||
'count', Blockly.Variables.NAME_TYPE);
|
||||
@@ -67,7 +67,7 @@ Blockly.JavaScript['controls_whileUntil'] = function(block) {
|
||||
until ? Blockly.JavaScript.ORDER_LOGICAL_NOT :
|
||||
Blockly.JavaScript.ORDER_NONE) || 'false';
|
||||
var branch = Blockly.JavaScript.statementToCode(block, 'DO');
|
||||
branch = Blockly.JavaScript.addLoopTrap(branch, block.id);
|
||||
branch = Blockly.JavaScript.addLoopTrap(branch, block);
|
||||
if (until) {
|
||||
argument0 = '!' + argument0;
|
||||
}
|
||||
@@ -85,7 +85,7 @@ Blockly.JavaScript['controls_for'] = function(block) {
|
||||
var increment = Blockly.JavaScript.valueToCode(block, 'BY',
|
||||
Blockly.JavaScript.ORDER_ASSIGNMENT) || '1';
|
||||
var branch = Blockly.JavaScript.statementToCode(block, 'DO');
|
||||
branch = Blockly.JavaScript.addLoopTrap(branch, block.id);
|
||||
branch = Blockly.JavaScript.addLoopTrap(branch, block);
|
||||
var code;
|
||||
if (Blockly.isNumber(argument0) && Blockly.isNumber(argument1) &&
|
||||
Blockly.isNumber(increment)) {
|
||||
@@ -146,7 +146,7 @@ Blockly.JavaScript['controls_forEach'] = function(block) {
|
||||
var argument0 = Blockly.JavaScript.valueToCode(block, 'LIST',
|
||||
Blockly.JavaScript.ORDER_ASSIGNMENT) || '[]';
|
||||
var branch = Blockly.JavaScript.statementToCode(block, 'DO');
|
||||
branch = Blockly.JavaScript.addLoopTrap(branch, block.id);
|
||||
branch = Blockly.JavaScript.addLoopTrap(branch, block);
|
||||
var code = '';
|
||||
// Cache non-trivial values to variables to prevent repeated look-ups.
|
||||
var listVar = argument0;
|
||||
|
||||
@@ -34,20 +34,19 @@ Blockly.JavaScript['procedures_defreturn'] = function(block) {
|
||||
var funcName = Blockly.JavaScript.variableDB_.getName(
|
||||
block.getFieldValue('NAME'), Blockly.Procedures.NAME_TYPE);
|
||||
var branch = Blockly.JavaScript.statementToCode(block, 'STACK');
|
||||
var id = block.id.replace(/\$/g, '$$$$'); // Issue 251.
|
||||
if (Blockly.JavaScript.STATEMENT_SUFFIX) {
|
||||
branch = Blockly.JavaScript.prefixLines(
|
||||
Blockly.JavaScript.STATEMENT_SUFFIX.replace(/%1/g, '\'' + id + '\''),
|
||||
Blockly.JavaScript.injectId(Blockly.JavaScript.STATEMENT_SUFFIX, block),
|
||||
Blockly.JavaScript.INDENT) + branch;
|
||||
}
|
||||
if (Blockly.JavaScript.INFINITE_LOOP_TRAP) {
|
||||
branch = Blockly.JavaScript.prefixLines(
|
||||
Blockly.JavaScript.INFINITE_LOOP_TRAP.replace(/%1/g, '\'' + id + '\''),
|
||||
Blockly.JavaScript.INDENT) + branch;
|
||||
Blockly.JavaScript.injectId(Blockly.JavaScript.INFINITE_LOOP_TRAP,
|
||||
block), Blockly.JavaScript.INDENT) + branch;
|
||||
}
|
||||
if (Blockly.JavaScript.STATEMENT_PREFIX) {
|
||||
branch = Blockly.JavaScript.prefixLines(
|
||||
Blockly.JavaScript.STATEMENT_PREFIX.replace(/%1/g, '\'' + id + '\''),
|
||||
Blockly.JavaScript.injectId(Blockly.JavaScript.STATEMENT_PREFIX, block),
|
||||
Blockly.JavaScript.INDENT) + branch;
|
||||
}
|
||||
var returnValue = Blockly.JavaScript.valueToCode(block, 'RETURN',
|
||||
@@ -104,6 +103,14 @@ Blockly.JavaScript['procedures_ifreturn'] = function(block) {
|
||||
var condition = Blockly.JavaScript.valueToCode(block, 'CONDITION',
|
||||
Blockly.JavaScript.ORDER_NONE) || 'false';
|
||||
var code = 'if (' + condition + ') {\n';
|
||||
if (Blockly.JavaScript.STATEMENT_SUFFIX) {
|
||||
// Inject any statement suffix here since the regular one at the end
|
||||
// will not get executed if the return is triggered.
|
||||
var id = block.id.replace(/\$/g, '$$$$'); // Issue 251.
|
||||
code += Blockly.JavaScript.prefixLines(
|
||||
Blockly.JavaScript.injectId(Blockly.JavaScript.STATEMENT_SUFFIX, block),
|
||||
Blockly.JavaScript.INDENT);
|
||||
}
|
||||
if (block.hasReturnValue_) {
|
||||
var value = Blockly.JavaScript.valueToCode(block, 'VALUE',
|
||||
Blockly.JavaScript.ORDER_NONE) || 'null';
|
||||
|
||||
@@ -45,37 +45,34 @@ Blockly.Lua.CONTINUE_STATEMENT = 'goto continue\n';
|
||||
*
|
||||
* @param {string} branch Generated code of the loop body
|
||||
* @return {string} Generated label or '' if unnecessary
|
||||
* @private
|
||||
*/
|
||||
Blockly.Lua.addContinueLabel = function(branch) {
|
||||
if (branch.indexOf(Blockly.Lua.CONTINUE_STATEMENT) > -1) {
|
||||
Blockly.Lua.addContinueLabel_ = function(branch) {
|
||||
if (branch.indexOf(Blockly.Lua.CONTINUE_STATEMENT) != -1) {
|
||||
return branch + Blockly.Lua.INDENT + '::continue::\n';
|
||||
} else {
|
||||
return branch;
|
||||
}
|
||||
};
|
||||
|
||||
Blockly.Lua['controls_repeat'] = function(block) {
|
||||
// Repeat n times (internal number).
|
||||
var repeats = parseInt(block.getFieldValue('TIMES'), 10);
|
||||
var branch = Blockly.Lua.statementToCode(block, 'DO') || '';
|
||||
branch = Blockly.Lua.addContinueLabel(branch);
|
||||
var loopVar = Blockly.Lua.variableDB_.getDistinctName(
|
||||
'count', Blockly.Variables.NAME_TYPE);
|
||||
var code = 'for ' + loopVar + ' = 1, ' + repeats + ' do\n' + branch + 'end\n';
|
||||
return code;
|
||||
};
|
||||
|
||||
Blockly.Lua['controls_repeat_ext'] = function(block) {
|
||||
// Repeat n times (external number).
|
||||
var repeats = Blockly.Lua.valueToCode(block, 'TIMES',
|
||||
Blockly.Lua.ORDER_NONE) || '0';
|
||||
// Repeat n times.
|
||||
if (block.getField('TIMES')) {
|
||||
// Internal number.
|
||||
var repeats = String(Number(block.getFieldValue('TIMES')));
|
||||
} else {
|
||||
// External number.
|
||||
var repeats = Blockly.Lua.valueToCode(block, 'TIMES',
|
||||
Blockly.Lua.ORDER_NONE) || '0';
|
||||
}
|
||||
if (Blockly.isNumber(repeats)) {
|
||||
repeats = parseInt(repeats, 10);
|
||||
} else {
|
||||
repeats = 'math.floor(' + repeats + ')';
|
||||
}
|
||||
var branch = Blockly.Lua.statementToCode(block, 'DO') || '\n';
|
||||
branch = Blockly.Lua.addContinueLabel(branch);
|
||||
var branch = Blockly.Lua.statementToCode(block, 'DO');
|
||||
branch = Blockly.Lua.addLoopTrap(branch, block);
|
||||
branch = Blockly.Lua.addContinueLabel_(branch);
|
||||
var loopVar = Blockly.Lua.variableDB_.getDistinctName(
|
||||
'count', Blockly.Variables.NAME_TYPE);
|
||||
var code = 'for ' + loopVar + ' = 1, ' + repeats + ' do\n' +
|
||||
@@ -83,15 +80,17 @@ Blockly.Lua['controls_repeat_ext'] = function(block) {
|
||||
return code;
|
||||
};
|
||||
|
||||
Blockly.Lua['controls_repeat'] = Blockly.Lua['controls_repeat_ext'];
|
||||
|
||||
Blockly.Lua['controls_whileUntil'] = function(block) {
|
||||
// Do while/until loop.
|
||||
var until = block.getFieldValue('MODE') == 'UNTIL';
|
||||
var argument0 = Blockly.Lua.valueToCode(block, 'BOOL',
|
||||
until ? Blockly.Lua.ORDER_UNARY :
|
||||
Blockly.Lua.ORDER_NONE) || 'false';
|
||||
var branch = Blockly.Lua.statementToCode(block, 'DO') || '\n';
|
||||
branch = Blockly.Lua.addLoopTrap(branch, block.id);
|
||||
branch = Blockly.Lua.addContinueLabel(branch);
|
||||
var branch = Blockly.Lua.statementToCode(block, 'DO');
|
||||
branch = Blockly.Lua.addLoopTrap(branch, block);
|
||||
branch = Blockly.Lua.addContinueLabel_(branch);
|
||||
if (until) {
|
||||
argument0 = 'not ' + argument0;
|
||||
}
|
||||
@@ -108,9 +107,9 @@ Blockly.Lua['controls_for'] = function(block) {
|
||||
Blockly.Lua.ORDER_NONE) || '0';
|
||||
var increment = Blockly.Lua.valueToCode(block, 'BY',
|
||||
Blockly.Lua.ORDER_NONE) || '1';
|
||||
var branch = Blockly.Lua.statementToCode(block, 'DO') || '\n';
|
||||
branch = Blockly.Lua.addLoopTrap(branch, block.id);
|
||||
branch = Blockly.Lua.addContinueLabel(branch);
|
||||
var branch = Blockly.Lua.statementToCode(block, 'DO');
|
||||
branch = Blockly.Lua.addLoopTrap(branch, block);
|
||||
branch = Blockly.Lua.addContinueLabel_(branch);
|
||||
var code = '';
|
||||
var incValue;
|
||||
if (Blockly.isNumber(startVar) && Blockly.isNumber(endVar) &&
|
||||
@@ -147,8 +146,9 @@ Blockly.Lua['controls_forEach'] = function(block) {
|
||||
block.getFieldValue('VAR'), Blockly.Variables.NAME_TYPE);
|
||||
var argument0 = Blockly.Lua.valueToCode(block, 'LIST',
|
||||
Blockly.Lua.ORDER_NONE) || '{}';
|
||||
var branch = Blockly.Lua.statementToCode(block, 'DO') || '\n';
|
||||
branch = Blockly.Lua.addContinueLabel(branch);
|
||||
var branch = Blockly.Lua.statementToCode(block, 'DO');
|
||||
branch = Blockly.Lua.addLoopTrap(branch, block);
|
||||
branch = Blockly.Lua.addContinueLabel_(branch);
|
||||
var code = 'for _, ' + variable0 + ' in ipairs(' + argument0 + ') do \n' +
|
||||
branch + 'end\n';
|
||||
return code;
|
||||
|
||||
@@ -34,20 +34,19 @@ Blockly.Lua['procedures_defreturn'] = function(block) {
|
||||
var funcName = Blockly.Lua.variableDB_.getName(
|
||||
block.getFieldValue('NAME'), Blockly.Procedures.NAME_TYPE);
|
||||
var branch = Blockly.Lua.statementToCode(block, 'STACK');
|
||||
var id = block.id.replace(/\$/g, '$$$$'); // Issue 251.
|
||||
if (Blockly.Lua.STATEMENT_SUFFIX) {
|
||||
branch = Blockly.Lua.prefixLines(
|
||||
Blockly.Lua.STATEMENT_SUFFIX.replace(/%1/g, '\'' + id + '\''),
|
||||
Blockly.Lua.injectId(Blockly.Lua.STATEMENT_SUFFIX, block),
|
||||
Blockly.Lua.INDENT) + branch;
|
||||
}
|
||||
if (Blockly.Lua.INFINITE_LOOP_TRAP) {
|
||||
branch = Blockly.Lua.prefixLines(
|
||||
Blockly.Lua.INFINITE_LOOP_TRAP.replace(/%1/g, '\'' + id + '\''),
|
||||
Blockly.Lua.injectId(Blockly.Lua.INFINITE_LOOP_TRAP, block),
|
||||
Blockly.Lua.INDENT) + branch;
|
||||
}
|
||||
if (Blockly.Lua.STATEMENT_PREFIX) {
|
||||
branch = Blockly.Lua.prefixLines(
|
||||
Blockly.Lua.STATEMENT_PREFIX.replace(/%1/g, '\'' + id + '\''),
|
||||
Blockly.Lua.injectId(Blockly.Lua.STATEMENT_PREFIX, block),
|
||||
Blockly.Lua.INDENT) + branch;
|
||||
}
|
||||
var returnValue = Blockly.Lua.valueToCode(block, 'RETURN',
|
||||
@@ -106,6 +105,13 @@ Blockly.Lua['procedures_ifreturn'] = function(block) {
|
||||
var condition = Blockly.Lua.valueToCode(block, 'CONDITION',
|
||||
Blockly.Lua.ORDER_NONE) || 'false';
|
||||
var code = 'if ' + condition + ' then\n';
|
||||
if (Blockly.Lua.STATEMENT_SUFFIX) {
|
||||
// Inject any statement suffix here since the regular one at the end
|
||||
// will not get executed if the return is triggered.
|
||||
code += Blockly.Lua.prefixLines(
|
||||
Blockly.Lua.injectId(Blockly.Lua.STATEMENT_SUFFIX, block),
|
||||
Blockly.Lua.INDENT);
|
||||
}
|
||||
if (block.hasReturnValue_) {
|
||||
var value = Blockly.Lua.valueToCode(block, 'VALUE',
|
||||
Blockly.Lua.ORDER_NONE) || 'nil';
|
||||
|
||||
@@ -40,7 +40,7 @@ Blockly.PHP['controls_repeat_ext'] = function(block) {
|
||||
Blockly.PHP.ORDER_ASSIGNMENT) || '0';
|
||||
}
|
||||
var branch = Blockly.PHP.statementToCode(block, 'DO');
|
||||
branch = Blockly.PHP.addLoopTrap(branch, block.id);
|
||||
branch = Blockly.PHP.addLoopTrap(branch, block);
|
||||
var code = '';
|
||||
var loopVar = Blockly.PHP.variableDB_.getDistinctName(
|
||||
'count', Blockly.Variables.NAME_TYPE);
|
||||
@@ -66,7 +66,7 @@ Blockly.PHP['controls_whileUntil'] = function(block) {
|
||||
until ? Blockly.PHP.ORDER_LOGICAL_NOT :
|
||||
Blockly.PHP.ORDER_NONE) || 'false';
|
||||
var branch = Blockly.PHP.statementToCode(block, 'DO');
|
||||
branch = Blockly.PHP.addLoopTrap(branch, block.id);
|
||||
branch = Blockly.PHP.addLoopTrap(branch, block);
|
||||
if (until) {
|
||||
argument0 = '!' + argument0;
|
||||
}
|
||||
@@ -84,7 +84,7 @@ Blockly.PHP['controls_for'] = function(block) {
|
||||
var increment = Blockly.PHP.valueToCode(block, 'BY',
|
||||
Blockly.PHP.ORDER_ASSIGNMENT) || '1';
|
||||
var branch = Blockly.PHP.statementToCode(block, 'DO');
|
||||
branch = Blockly.PHP.addLoopTrap(branch, block.id);
|
||||
branch = Blockly.PHP.addLoopTrap(branch, block);
|
||||
var code;
|
||||
if (Blockly.isNumber(argument0) && Blockly.isNumber(argument1) &&
|
||||
Blockly.isNumber(increment)) {
|
||||
@@ -145,7 +145,7 @@ Blockly.PHP['controls_forEach'] = function(block) {
|
||||
var argument0 = Blockly.PHP.valueToCode(block, 'LIST',
|
||||
Blockly.PHP.ORDER_ASSIGNMENT) || '[]';
|
||||
var branch = Blockly.PHP.statementToCode(block, 'DO');
|
||||
branch = Blockly.PHP.addLoopTrap(branch, block.id);
|
||||
branch = Blockly.PHP.addLoopTrap(branch, block);
|
||||
var code = '';
|
||||
code += 'foreach (' + argument0 + ' as ' + variable0 +
|
||||
') {\n' + branch + '}\n';
|
||||
|
||||
@@ -55,20 +55,19 @@ Blockly.PHP['procedures_defreturn'] = function(block) {
|
||||
var funcName = Blockly.PHP.variableDB_.getName(
|
||||
block.getFieldValue('NAME'), Blockly.Procedures.NAME_TYPE);
|
||||
var branch = Blockly.PHP.statementToCode(block, 'STACK');
|
||||
var id = block.id.replace(/\$/g, '$$$$'); // Issue 251.
|
||||
if (Blockly.PHP.STATEMENT_SUFFIX) {
|
||||
branch = Blockly.PHP.prefixLines(
|
||||
Blockly.PHP.STATEMENT_SUFFIX.replace(/%1/g, '\'' + id + '\''),
|
||||
Blockly.PHP.injectId(Blockly.PHP.STATEMENT_SUFFIX, block),
|
||||
Blockly.PHP.INDENT) + branch;
|
||||
}
|
||||
if (Blockly.PHP.INFINITE_LOOP_TRAP) {
|
||||
branch = Blockly.PHP.prefixLines(
|
||||
Blockly.PHP.INFINITE_LOOP_TRAP.replace(/%1/g, '\'' + id + '\''),
|
||||
Blockly.PHP.injectId(Blockly.PHP.INFINITE_LOOP_TRAP, block),
|
||||
Blockly.PHP.INDENT) + branch;
|
||||
}
|
||||
if (Blockly.PHP.STATEMENT_PREFIX) {
|
||||
branch = Blockly.PHP.prefixLines(
|
||||
Blockly.PHP.STATEMENT_PREFIX.replace(/%1/g, '\'' + id + '\''),
|
||||
Blockly.PHP.injectId(Blockly.PHP.STATEMENT_PREFIX, block),
|
||||
Blockly.PHP.INDENT) + branch;
|
||||
}
|
||||
var returnValue = Blockly.PHP.valueToCode(block, 'RETURN',
|
||||
@@ -125,6 +124,14 @@ Blockly.PHP['procedures_ifreturn'] = function(block) {
|
||||
var condition = Blockly.PHP.valueToCode(block, 'CONDITION',
|
||||
Blockly.PHP.ORDER_NONE) || 'false';
|
||||
var code = 'if (' + condition + ') {\n';
|
||||
if (Blockly.PHP.STATEMENT_SUFFIX) {
|
||||
// Inject any statement suffix here since the regular one at the end
|
||||
// will not get executed if the return is triggered.
|
||||
var id = block.id.replace(/\$/g, '$$$$'); // Issue 251.
|
||||
code += Blockly.PHP.prefixLines(
|
||||
Blockly.PHP.injectId(Blockly.PHP.STATEMENT_SUFFIX, block),
|
||||
Blockly.PHP.INDENT);
|
||||
}
|
||||
if (block.hasReturnValue_) {
|
||||
var value = Blockly.PHP.valueToCode(block, 'VALUE',
|
||||
Blockly.PHP.ORDER_NONE) || 'null';
|
||||
|
||||
@@ -45,8 +45,7 @@ Blockly.Python['controls_repeat_ext'] = function(block) {
|
||||
repeats = 'int(' + repeats + ')';
|
||||
}
|
||||
var branch = Blockly.Python.statementToCode(block, 'DO');
|
||||
branch = Blockly.Python.addLoopTrap(branch, block.id) ||
|
||||
Blockly.Python.PASS;
|
||||
branch = Blockly.Python.addLoopTrap(branch, block) || Blockly.Python.PASS;
|
||||
var loopVar = Blockly.Python.variableDB_.getDistinctName(
|
||||
'count', Blockly.Variables.NAME_TYPE);
|
||||
var code = 'for ' + loopVar + ' in range(' + repeats + '):\n' + branch;
|
||||
@@ -62,8 +61,7 @@ Blockly.Python['controls_whileUntil'] = function(block) {
|
||||
until ? Blockly.Python.ORDER_LOGICAL_NOT :
|
||||
Blockly.Python.ORDER_NONE) || 'False';
|
||||
var branch = Blockly.Python.statementToCode(block, 'DO');
|
||||
branch = Blockly.Python.addLoopTrap(branch, block.id) ||
|
||||
Blockly.Python.PASS;
|
||||
branch = Blockly.Python.addLoopTrap(branch, block) || Blockly.Python.PASS;
|
||||
if (until) {
|
||||
argument0 = 'not ' + argument0;
|
||||
}
|
||||
@@ -81,8 +79,7 @@ Blockly.Python['controls_for'] = function(block) {
|
||||
var increment = Blockly.Python.valueToCode(block, 'BY',
|
||||
Blockly.Python.ORDER_NONE) || '1';
|
||||
var branch = Blockly.Python.statementToCode(block, 'DO');
|
||||
branch = Blockly.Python.addLoopTrap(branch, block.id) ||
|
||||
Blockly.Python.PASS;
|
||||
branch = Blockly.Python.addLoopTrap(branch, block) || Blockly.Python.PASS;
|
||||
|
||||
var code = '';
|
||||
var range;
|
||||
@@ -193,8 +190,7 @@ Blockly.Python['controls_forEach'] = function(block) {
|
||||
var argument0 = Blockly.Python.valueToCode(block, 'LIST',
|
||||
Blockly.Python.ORDER_RELATIONAL) || '[]';
|
||||
var branch = Blockly.Python.statementToCode(block, 'DO');
|
||||
branch = Blockly.Python.addLoopTrap(branch, block.id) ||
|
||||
Blockly.Python.PASS;
|
||||
branch = Blockly.Python.addLoopTrap(branch, block) || Blockly.Python.PASS;
|
||||
var code = 'for ' + variable0 + ' in ' + argument0 + ':\n' + branch;
|
||||
return code;
|
||||
};
|
||||
|
||||
@@ -56,20 +56,19 @@ Blockly.Python['procedures_defreturn'] = function(block) {
|
||||
var funcName = Blockly.Python.variableDB_.getName(
|
||||
block.getFieldValue('NAME'), Blockly.Procedures.NAME_TYPE);
|
||||
var branch = Blockly.Python.statementToCode(block, 'STACK');
|
||||
var id = block.id.replace(/\$/g, '$$$$'); // Issue 251.
|
||||
if (Blockly.Python.STATEMENT_SUFFIX) {
|
||||
branch = Blockly.Python.prefixLines(
|
||||
Blockly.Python.STATEMENT_SUFFIX.replace( /%1/g, '\'' + id + '\''),
|
||||
Blockly.Python.injectId(Blockly.Python.STATEMENT_SUFFIX, block),
|
||||
Blockly.Python.INDENT) + branch;
|
||||
}
|
||||
if (Blockly.Python.INFINITE_LOOP_TRAP) {
|
||||
branch = Blockly.Python.prefixLines(
|
||||
Blockly.Python.INFINITE_LOOP_TRAP.replace(/%1/g, '\'' + id + '\''),
|
||||
Blockly.Python.injectId(Blockly.Python.INFINITE_LOOP_TRAP, block),
|
||||
Blockly.Python.INDENT) + branch;
|
||||
}
|
||||
if (Blockly.Python.STATEMENT_PREFIX) {
|
||||
branch = Blockly.Python.prefixLines(
|
||||
Blockly.Python.STATEMENT_PREFIX.replace( /%1/g, '\'' + id + '\''),
|
||||
Blockly.Python.injectId(Blockly.Python.STATEMENT_PREFIX, block),
|
||||
Blockly.Python.INDENT) + branch;
|
||||
}
|
||||
var returnValue = Blockly.Python.valueToCode(block, 'RETURN',
|
||||
@@ -128,6 +127,13 @@ Blockly.Python['procedures_ifreturn'] = function(block) {
|
||||
var condition = Blockly.Python.valueToCode(block, 'CONDITION',
|
||||
Blockly.Python.ORDER_NONE) || 'False';
|
||||
var code = 'if ' + condition + ':\n';
|
||||
if (Blockly.Python.STATEMENT_SUFFIX) {
|
||||
// Inject any statement suffix here since the regular one at the end
|
||||
// will not get executed if the return is triggered.
|
||||
code += Blockly.Python.prefixLines(
|
||||
Blockly.Python.injectId(Blockly.Python.STATEMENT_SUFFIX, block),
|
||||
Blockly.Python.INDENT);
|
||||
}
|
||||
if (block.hasReturnValue_) {
|
||||
var value = Blockly.Python.valueToCode(block, 'VALUE',
|
||||
Blockly.Python.ORDER_NONE) || 'None';
|
||||
|
||||
Reference in New Issue
Block a user