chore: update javascript block generators to const and let (#5661)

This commit is contained in:
Rachel Fenichel
2021-11-03 10:27:13 -07:00
committed by GitHub
parent 6c0c81d2f8
commit de95ffd133
9 changed files with 337 additions and 305 deletions

View File

@@ -16,20 +16,21 @@ goog.require('Blockly.JavaScript');
Blockly.JavaScript['controls_repeat_ext'] = function(block) {
// Repeat n times.
let repeats;
if (block.getField('TIMES')) {
// Internal number.
var repeats = String(Number(block.getFieldValue('TIMES')));
repeats = String(Number(block.getFieldValue('TIMES')));
} else {
// External number.
var repeats = Blockly.JavaScript.valueToCode(block, 'TIMES',
repeats = Blockly.JavaScript.valueToCode(block, 'TIMES',
Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
}
var branch = Blockly.JavaScript.statementToCode(block, 'DO');
let branch = Blockly.JavaScript.statementToCode(block, 'DO');
branch = Blockly.JavaScript.addLoopTrap(branch, block);
var code = '';
var loopVar = Blockly.JavaScript.nameDB_.getDistinctName(
let code = '';
const loopVar = Blockly.JavaScript.nameDB_.getDistinctName(
'count', Blockly.VARIABLE_CATEGORY_NAME);
var endVar = repeats;
let endVar = repeats;
if (!repeats.match(/^\w+$/) && !Blockly.isNumber(repeats)) {
endVar = Blockly.JavaScript.nameDB_.getDistinctName(
'repeat_end', Blockly.VARIABLE_CATEGORY_NAME);
@@ -47,11 +48,11 @@ Blockly.JavaScript['controls_repeat'] =
Blockly.JavaScript['controls_whileUntil'] = function(block) {
// Do while/until loop.
var until = block.getFieldValue('MODE') === 'UNTIL';
var argument0 = Blockly.JavaScript.valueToCode(block, 'BOOL',
const until = block.getFieldValue('MODE') === 'UNTIL';
let argument0 = Blockly.JavaScript.valueToCode(block, 'BOOL',
until ? Blockly.JavaScript.ORDER_LOGICAL_NOT :
Blockly.JavaScript.ORDER_NONE) || 'false';
var branch = Blockly.JavaScript.statementToCode(block, 'DO');
let branch = Blockly.JavaScript.statementToCode(block, 'DO');
branch = Blockly.JavaScript.addLoopTrap(branch, block);
if (until) {
argument0 = '!' + argument0;
@@ -61,25 +62,25 @@ Blockly.JavaScript['controls_whileUntil'] = function(block) {
Blockly.JavaScript['controls_for'] = function(block) {
// For loop.
var variable0 = Blockly.JavaScript.nameDB_.getName(
const variable0 = Blockly.JavaScript.nameDB_.getName(
block.getFieldValue('VAR'), Blockly.VARIABLE_CATEGORY_NAME);
var argument0 = Blockly.JavaScript.valueToCode(block, 'FROM',
const argument0 = Blockly.JavaScript.valueToCode(block, 'FROM',
Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var argument1 = Blockly.JavaScript.valueToCode(block, 'TO',
const argument1 = Blockly.JavaScript.valueToCode(block, 'TO',
Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var increment = Blockly.JavaScript.valueToCode(block, 'BY',
const increment = Blockly.JavaScript.valueToCode(block, 'BY',
Blockly.JavaScript.ORDER_ASSIGNMENT) || '1';
var branch = Blockly.JavaScript.statementToCode(block, 'DO');
let branch = Blockly.JavaScript.statementToCode(block, 'DO');
branch = Blockly.JavaScript.addLoopTrap(branch, block);
var code;
let code;
if (Blockly.isNumber(argument0) && Blockly.isNumber(argument1) &&
Blockly.isNumber(increment)) {
// All arguments are simple numbers.
var up = Number(argument0) <= Number(argument1);
const up = Number(argument0) <= Number(argument1);
code = 'for (' + variable0 + ' = ' + argument0 + '; ' +
variable0 + (up ? ' <= ' : ' >= ') + argument1 + '; ' +
variable0;
var step = Math.abs(Number(increment));
const step = Math.abs(Number(increment));
if (step === 1) {
code += up ? '++' : '--';
} else {
@@ -89,13 +90,13 @@ Blockly.JavaScript['controls_for'] = function(block) {
} else {
code = '';
// Cache non-trivial values to variables to prevent repeated look-ups.
var startVar = argument0;
let startVar = argument0;
if (!argument0.match(/^\w+$/) && !Blockly.isNumber(argument0)) {
startVar = Blockly.JavaScript.nameDB_.getDistinctName(
variable0 + '_start', Blockly.VARIABLE_CATEGORY_NAME);
code += 'var ' + startVar + ' = ' + argument0 + ';\n';
}
var endVar = argument1;
let endVar = argument1;
if (!argument1.match(/^\w+$/) && !Blockly.isNumber(argument1)) {
endVar = Blockly.JavaScript.nameDB_.getDistinctName(
variable0 + '_end', Blockly.VARIABLE_CATEGORY_NAME);
@@ -103,7 +104,7 @@ Blockly.JavaScript['controls_for'] = function(block) {
}
// Determine loop direction at start, in case one of the bounds
// changes during loop execution.
var incVar = Blockly.JavaScript.nameDB_.getDistinctName(
const incVar = Blockly.JavaScript.nameDB_.getDistinctName(
variable0 + '_inc', Blockly.VARIABLE_CATEGORY_NAME);
code += 'var ' + incVar + ' = ';
if (Blockly.isNumber(increment)) {
@@ -126,21 +127,21 @@ Blockly.JavaScript['controls_for'] = function(block) {
Blockly.JavaScript['controls_forEach'] = function(block) {
// For each loop.
var variable0 = Blockly.JavaScript.nameDB_.getName(
const variable0 = Blockly.JavaScript.nameDB_.getName(
block.getFieldValue('VAR'), Blockly.VARIABLE_CATEGORY_NAME);
var argument0 = Blockly.JavaScript.valueToCode(block, 'LIST',
const argument0 = Blockly.JavaScript.valueToCode(block, 'LIST',
Blockly.JavaScript.ORDER_ASSIGNMENT) || '[]';
var branch = Blockly.JavaScript.statementToCode(block, 'DO');
let branch = Blockly.JavaScript.statementToCode(block, 'DO');
branch = Blockly.JavaScript.addLoopTrap(branch, block);
var code = '';
let code = '';
// Cache non-trivial values to variables to prevent repeated look-ups.
var listVar = argument0;
let listVar = argument0;
if (!argument0.match(/^\w+$/)) {
listVar = Blockly.JavaScript.nameDB_.getDistinctName(
variable0 + '_list', Blockly.VARIABLE_CATEGORY_NAME);
code += 'var ' + listVar + ' = ' + argument0 + ';\n';
}
var indexVar = Blockly.JavaScript.nameDB_.getDistinctName(
const indexVar = Blockly.JavaScript.nameDB_.getDistinctName(
variable0 + '_index', Blockly.VARIABLE_CATEGORY_NAME);
branch = Blockly.JavaScript.INDENT + variable0 + ' = ' +
listVar + '[' + indexVar + '];\n' + branch;
@@ -150,7 +151,7 @@ Blockly.JavaScript['controls_forEach'] = function(block) {
Blockly.JavaScript['controls_flow_statements'] = function(block) {
// Flow statements: continue, break.
var xfix = '';
let xfix = '';
if (Blockly.JavaScript.STATEMENT_PREFIX) {
// Automatic prefix insertion is switched off for this block. Add manually.
xfix += Blockly.JavaScript.injectId(Blockly.JavaScript.STATEMENT_PREFIX,
@@ -163,7 +164,7 @@ Blockly.JavaScript['controls_flow_statements'] = function(block) {
block);
}
if (Blockly.JavaScript.STATEMENT_PREFIX) {
var loop = Blockly.Constants.Loops
const loop = Blockly.Constants.Loops
.CONTROL_FLOW_IN_LOOP_CHECK_MIXIN.getSurroundLoop(block);
if (loop && !loop.suppressPrefixSuffix) {
// Inject loop's statement prefix here since the regular one at the end