From 1b29a00267f864a7b420e388f06918a330ea8d2a Mon Sep 17 00:00:00 2001 From: Rachel Fenichel Date: Wed, 3 Nov 2021 10:34:27 -0700 Subject: [PATCH] chore: update php block generators to const and let (#5663) --- generators/php/colour.js | 26 ++--- generators/php/lists.js | 220 ++++++++++++++++++----------------- generators/php/logic.js | 44 +++---- generators/php/loops.js | 53 ++++----- generators/php/math.js | 99 ++++++++-------- generators/php/procedures.js | 56 ++++----- generators/php/text.js | 148 ++++++++++++----------- generators/php/variables.js | 6 +- tests/deps.mocha.js | 16 +-- 9 files changed, 347 insertions(+), 321 deletions(-) diff --git a/generators/php/colour.js b/generators/php/colour.js index 320949fc6..59e55e7f1 100644 --- a/generators/php/colour.js +++ b/generators/php/colour.js @@ -16,31 +16,31 @@ goog.require('Blockly.PHP'); Blockly.PHP['colour_picker'] = function(block) { // Colour picker. - var code = Blockly.PHP.quote_(block.getFieldValue('COLOUR')); + const code = Blockly.PHP.quote_(block.getFieldValue('COLOUR')); return [code, Blockly.PHP.ORDER_ATOMIC]; }; Blockly.PHP['colour_random'] = function(block) { // Generate a random colour. - var functionName = Blockly.PHP.provideFunction_( + const functionName = Blockly.PHP.provideFunction_( 'colour_random', ['function ' + Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_ + '() {', ' return \'#\' . str_pad(dechex(mt_rand(0, 0xFFFFFF)), ' + '6, \'0\', STR_PAD_LEFT);', '}']); - var code = functionName + '()'; + const code = functionName + '()'; return [code, Blockly.PHP.ORDER_FUNCTION_CALL]; }; Blockly.PHP['colour_rgb'] = function(block) { // Compose a colour from RGB components expressed as percentages. - var red = Blockly.PHP.valueToCode(block, 'RED', + const red = Blockly.PHP.valueToCode(block, 'RED', Blockly.PHP.ORDER_NONE) || 0; - var green = Blockly.PHP.valueToCode(block, 'GREEN', + const green = Blockly.PHP.valueToCode(block, 'GREEN', Blockly.PHP.ORDER_NONE) || 0; - var blue = Blockly.PHP.valueToCode(block, 'BLUE', + const blue = Blockly.PHP.valueToCode(block, 'BLUE', Blockly.PHP.ORDER_NONE) || 0; - var functionName = Blockly.PHP.provideFunction_( + const functionName = Blockly.PHP.provideFunction_( 'colour_rgb', ['function ' + Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_ + '($r, $g, $b) {', @@ -53,19 +53,19 @@ Blockly.PHP['colour_rgb'] = function(block) { ' $hex .= str_pad(dechex($b), 2, \'0\', STR_PAD_LEFT);', ' return $hex;', '}']); - var code = functionName + '(' + red + ', ' + green + ', ' + blue + ')'; + const code = functionName + '(' + red + ', ' + green + ', ' + blue + ')'; return [code, Blockly.PHP.ORDER_FUNCTION_CALL]; }; Blockly.PHP['colour_blend'] = function(block) { // Blend two colours together. - var c1 = Blockly.PHP.valueToCode(block, 'COLOUR1', + const c1 = Blockly.PHP.valueToCode(block, 'COLOUR1', Blockly.PHP.ORDER_NONE) || '\'#000000\''; - var c2 = Blockly.PHP.valueToCode(block, 'COLOUR2', + const c2 = Blockly.PHP.valueToCode(block, 'COLOUR2', Blockly.PHP.ORDER_NONE) || '\'#000000\''; - var ratio = Blockly.PHP.valueToCode(block, 'RATIO', + const ratio = Blockly.PHP.valueToCode(block, 'RATIO', Blockly.PHP.ORDER_NONE) || 0.5; - var functionName = Blockly.PHP.provideFunction_( + const functionName = Blockly.PHP.provideFunction_( 'colour_blend', ['function ' + Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_ + '($c1, $c2, $ratio) {', @@ -85,6 +85,6 @@ Blockly.PHP['colour_blend'] = function(block) { ' $hex .= str_pad(dechex($b), 2, \'0\', STR_PAD_LEFT);', ' return $hex;', '}']); - var code = functionName + '(' + c1 + ', ' + c2 + ', ' + ratio + ')'; + const code = functionName + '(' + c1 + ', ' + c2 + ', ' + ratio + ')'; return [code, Blockly.PHP.ORDER_FUNCTION_CALL]; }; diff --git a/generators/php/lists.js b/generators/php/lists.js index 8190672d4..bb27d6d83 100644 --- a/generators/php/lists.js +++ b/generators/php/lists.js @@ -32,8 +32,8 @@ Blockly.PHP['lists_create_empty'] = function(block) { Blockly.PHP['lists_create_with'] = function(block) { // Create a list with any number of elements of any type. - var code = new Array(block.itemCount_); - for (var i = 0; i < block.itemCount_; i++) { + let code = new Array(block.itemCount_); + for (let i = 0; i < block.itemCount_; i++) { code[i] = Blockly.PHP.valueToCode(block, 'ADD' + i, Blockly.PHP.ORDER_NONE) || 'null'; } @@ -43,7 +43,7 @@ Blockly.PHP['lists_create_with'] = function(block) { Blockly.PHP['lists_repeat'] = function(block) { // Create a list with one element repeated. - var functionName = Blockly.PHP.provideFunction_( + const functionName = Blockly.PHP.provideFunction_( 'lists_repeat', ['function ' + Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_ + '($value, $count) {', @@ -53,17 +53,17 @@ Blockly.PHP['lists_repeat'] = function(block) { ' }', ' return $array;', '}']); - var element = Blockly.PHP.valueToCode(block, 'ITEM', + const element = Blockly.PHP.valueToCode(block, 'ITEM', Blockly.PHP.ORDER_NONE) || 'null'; - var repeatCount = Blockly.PHP.valueToCode(block, 'NUM', + const repeatCount = Blockly.PHP.valueToCode(block, 'NUM', Blockly.PHP.ORDER_NONE) || '0'; - var code = functionName + '(' + element + ', ' + repeatCount + ')'; + const code = functionName + '(' + element + ', ' + repeatCount + ')'; return [code, Blockly.PHP.ORDER_FUNCTION_CALL]; }; Blockly.PHP['lists_length'] = function(block) { // String or array length. - var functionName = Blockly.PHP.provideFunction_( + const functionName = Blockly.PHP.provideFunction_( 'length', ['function ' + Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_ + '($value) {', ' if (is_string($value)) {', @@ -72,34 +72,34 @@ Blockly.PHP['lists_length'] = function(block) { ' return count($value);', ' }', '}']); - var list = Blockly.PHP.valueToCode(block, 'VALUE', + const list = Blockly.PHP.valueToCode(block, 'VALUE', Blockly.PHP.ORDER_NONE) || '\'\''; return [functionName + '(' + list + ')', Blockly.PHP.ORDER_FUNCTION_CALL]; }; Blockly.PHP['lists_isEmpty'] = function(block) { // Is the string null or array empty? - var argument0 = Blockly.PHP.valueToCode(block, 'VALUE', + const argument0 = Blockly.PHP.valueToCode(block, 'VALUE', Blockly.PHP.ORDER_FUNCTION_CALL) || 'array()'; return ['empty(' + argument0 + ')', Blockly.PHP.ORDER_FUNCTION_CALL]; }; Blockly.PHP['lists_indexOf'] = function(block) { // Find an item in the list. - var argument0 = Blockly.PHP.valueToCode(block, 'FIND', + const argument0 = Blockly.PHP.valueToCode(block, 'FIND', Blockly.PHP.ORDER_NONE) || '\'\''; - var argument1 = Blockly.PHP.valueToCode(block, 'VALUE', + const argument1 = Blockly.PHP.valueToCode(block, 'VALUE', Blockly.PHP.ORDER_MEMBER) || '[]'; + let errorIndex = ' -1'; + let indexAdjustment = ''; if (block.workspace.options.oneBasedIndex) { - var errorIndex = ' 0'; - var indexAdjustment = ' + 1'; - } else { - var errorIndex = ' -1'; - var indexAdjustment = ''; + errorIndex = ' 0'; + indexAdjustment = ' + 1'; } + let functionName; if (block.getFieldValue('END') === 'FIRST') { // indexOf - var functionName = Blockly.PHP.provideFunction_( + functionName = Blockly.PHP.provideFunction_( 'indexOf', ['function ' + Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_ + '($haystack, $needle) {', @@ -111,7 +111,7 @@ Blockly.PHP['lists_indexOf'] = function(block) { '}']); } else { // lastIndexOf - var functionName = Blockly.PHP.provideFunction_( + functionName = Blockly.PHP.provideFunction_( 'lastIndexOf', ['function ' + Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_ + '($haystack, $needle) {', @@ -124,80 +124,81 @@ Blockly.PHP['lists_indexOf'] = function(block) { '}']); } - var code = functionName + '(' + argument1 + ', ' + argument0 + ')'; + const code = functionName + '(' + argument1 + ', ' + argument0 + ')'; return [code, Blockly.PHP.ORDER_FUNCTION_CALL]; }; Blockly.PHP['lists_getIndex'] = function(block) { // Get element at index. - var mode = block.getFieldValue('MODE') || 'GET'; - var where = block.getFieldValue('WHERE') || 'FROM_START'; + const mode = block.getFieldValue('MODE') || 'GET'; + const where = block.getFieldValue('WHERE') || 'FROM_START'; switch (where) { case 'FIRST': if (mode === 'GET') { - var list = Blockly.PHP.valueToCode(block, 'VALUE', + const list = Blockly.PHP.valueToCode(block, 'VALUE', Blockly.PHP.ORDER_MEMBER) || 'array()'; - var code = list + '[0]'; + const code = list + '[0]'; return [code, Blockly.PHP.ORDER_MEMBER]; } else if (mode === 'GET_REMOVE') { - var list = Blockly.PHP.valueToCode(block, 'VALUE', + const list = Blockly.PHP.valueToCode(block, 'VALUE', Blockly.PHP.ORDER_NONE) || 'array()'; - var code = 'array_shift(' + list + ')'; + const code = 'array_shift(' + list + ')'; return [code, Blockly.PHP.ORDER_FUNCTION_CALL]; } else if (mode === 'REMOVE') { - var list = Blockly.PHP.valueToCode(block, 'VALUE', + const list = Blockly.PHP.valueToCode(block, 'VALUE', Blockly.PHP.ORDER_NONE) || 'array()'; return 'array_shift(' + list + ');\n'; } break; case 'LAST': if (mode === 'GET') { - var list = Blockly.PHP.valueToCode(block, 'VALUE', + const list = Blockly.PHP.valueToCode(block, 'VALUE', Blockly.PHP.ORDER_NONE) || 'array()'; - var code = 'end(' + list + ')'; + const code = 'end(' + list + ')'; return [code, Blockly.PHP.ORDER_FUNCTION_CALL]; } else if (mode === 'GET_REMOVE') { - var list = Blockly.PHP.valueToCode(block, 'VALUE', + const list = Blockly.PHP.valueToCode(block, 'VALUE', Blockly.PHP.ORDER_NONE) || 'array()'; - var code = 'array_pop(' + list + ')'; + const code = 'array_pop(' + list + ')'; return [code, Blockly.PHP.ORDER_FUNCTION_CALL]; } else if (mode === 'REMOVE') { - var list = Blockly.PHP.valueToCode(block, 'VALUE', + const list = Blockly.PHP.valueToCode(block, 'VALUE', Blockly.PHP.ORDER_NONE) || 'array()'; return 'array_pop(' + list + ');\n'; } break; - case 'FROM_START': - var at = Blockly.PHP.getAdjusted(block, 'AT'); + case 'FROM_START': { + const at = Blockly.PHP.getAdjusted(block, 'AT'); if (mode === 'GET') { - var list = Blockly.PHP.valueToCode(block, 'VALUE', + const list = Blockly.PHP.valueToCode(block, 'VALUE', Blockly.PHP.ORDER_MEMBER) || 'array()'; - var code = list + '[' + at + ']'; + const code = list + '[' + at + ']'; return [code, Blockly.PHP.ORDER_MEMBER]; } else if (mode === 'GET_REMOVE') { - var list = Blockly.PHP.valueToCode(block, 'VALUE', + const list = Blockly.PHP.valueToCode(block, 'VALUE', Blockly.PHP.ORDER_NONE) || 'array()'; - var code = 'array_splice(' + list + ', ' + at + ', 1)[0]'; + const code = 'array_splice(' + list + ', ' + at + ', 1)[0]'; return [code, Blockly.PHP.ORDER_FUNCTION_CALL]; } else if (mode === 'REMOVE') { - var list = Blockly.PHP.valueToCode(block, 'VALUE', + const list = Blockly.PHP.valueToCode(block, 'VALUE', Blockly.PHP.ORDER_NONE) || 'array()'; return 'array_splice(' + list + ', ' + at + ', 1);\n'; } break; + } case 'FROM_END': if (mode === 'GET') { - var list = Blockly.PHP.valueToCode(block, 'VALUE', + const list = Blockly.PHP.valueToCode(block, 'VALUE', Blockly.PHP.ORDER_NONE) || 'array()'; - var at = Blockly.PHP.getAdjusted(block, 'AT', 1, true); - var code = 'array_slice(' + list + ', ' + at + ', 1)[0]'; + const at = Blockly.PHP.getAdjusted(block, 'AT', 1, true); + const code = 'array_slice(' + list + ', ' + at + ', 1)[0]'; return [code, Blockly.PHP.ORDER_FUNCTION_CALL]; } else if (mode === 'GET_REMOVE' || mode === 'REMOVE') { - var list = Blockly.PHP.valueToCode(block, 'VALUE', + const list = Blockly.PHP.valueToCode(block, 'VALUE', Blockly.PHP.ORDER_NONE) || 'array()'; - var at = Blockly.PHP.getAdjusted(block, 'AT', 1, false, + const at = Blockly.PHP.getAdjusted(block, 'AT', 1, false, Blockly.PHP.ORDER_SUBTRACTION); - code = 'array_splice(' + list + + const code = 'array_splice(' + list + ', count(' + list + ') - ' + at + ', 1)[0]'; if (mode === 'GET_REMOVE') { return [code, Blockly.PHP.ORDER_FUNCTION_CALL]; @@ -206,20 +207,20 @@ Blockly.PHP['lists_getIndex'] = function(block) { } } break; - case 'RANDOM': - var list = Blockly.PHP.valueToCode(block, 'VALUE', + case 'RANDOM': { + const list = Blockly.PHP.valueToCode(block, 'VALUE', Blockly.PHP.ORDER_NONE) || 'array()'; if (mode === 'GET') { - var functionName = Blockly.PHP.provideFunction_( + const functionName = Blockly.PHP.provideFunction_( 'lists_get_random_item', ['function ' + Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_ + '($list) {', ' return $list[rand(0,count($list)-1)];', '}']); - code = functionName + '(' + list + ')'; + const code = functionName + '(' + list + ')'; return [code, Blockly.PHP.ORDER_FUNCTION_CALL]; } else if (mode === 'GET_REMOVE') { - var functionName = Blockly.PHP.provideFunction_( + const functionName = Blockly.PHP.provideFunction_( 'lists_get_remove_random_item', ['function ' + Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_ + '(&$list) {', @@ -227,10 +228,10 @@ Blockly.PHP['lists_getIndex'] = function(block) { ' unset($list[$x]);', ' return array_values($list);', '}']); - code = functionName + '(' + list + ')'; + const code = functionName + '(' + list + ')'; return [code, Blockly.PHP.ORDER_FUNCTION_CALL]; } else if (mode === 'REMOVE') { - var functionName = Blockly.PHP.provideFunction_( + const functionName = Blockly.PHP.provideFunction_( 'lists_remove_random_item', ['function ' + Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_ + '(&$list) {', @@ -239,6 +240,7 @@ Blockly.PHP['lists_getIndex'] = function(block) { return functionName + '(' + list + ');\n'; } break; + } } throw Error('Unhandled combination (lists_getIndex).'); }; @@ -246,39 +248,40 @@ Blockly.PHP['lists_getIndex'] = function(block) { Blockly.PHP['lists_setIndex'] = function(block) { // Set element at index. // Note: Until February 2013 this block did not have MODE or WHERE inputs. - var mode = block.getFieldValue('MODE') || 'GET'; - var where = block.getFieldValue('WHERE') || 'FROM_START'; - var value = Blockly.PHP.valueToCode(block, 'TO', + const mode = block.getFieldValue('MODE') || 'GET'; + const where = block.getFieldValue('WHERE') || 'FROM_START'; + const value = Blockly.PHP.valueToCode(block, 'TO', Blockly.PHP.ORDER_ASSIGNMENT) || 'null'; // Cache non-trivial values to variables to prevent repeated look-ups. // Closure, which accesses and modifies 'list'. + let cachedList; function cacheList() { - if (list.match(/^\$\w+$/)) { + if (cachedList.match(/^\$\w+$/)) { return ''; } - var listVar = Blockly.PHP.nameDB_.getDistinctName( + const listVar = Blockly.PHP.nameDB_.getDistinctName( 'tmp_list', Blockly.VARIABLE_CATEGORY_NAME); - var code = listVar + ' = &' + list + ';\n'; - list = listVar; + const code = listVar + ' = &' + cachedList + ';\n'; + cachedList = listVar; return code; } switch (where) { case 'FIRST': if (mode === 'SET') { - var list = Blockly.PHP.valueToCode(block, 'LIST', + const list = Blockly.PHP.valueToCode(block, 'LIST', Blockly.PHP.ORDER_MEMBER) || 'array()'; return list + '[0] = ' + value + ';\n'; } else if (mode === 'INSERT') { - var list = Blockly.PHP.valueToCode(block, 'LIST', + const list = Blockly.PHP.valueToCode(block, 'LIST', Blockly.PHP.ORDER_NONE) || 'array()'; return 'array_unshift(' + list + ', ' + value + ');\n'; } break; - case 'LAST': - var list = Blockly.PHP.valueToCode(block, 'LIST', + case 'LAST': { + const list = Blockly.PHP.valueToCode(block, 'LIST', Blockly.PHP.ORDER_NONE) || 'array()'; if (mode === 'SET') { - var functionName = Blockly.PHP.provideFunction_( + const functionName = Blockly.PHP.provideFunction_( 'lists_set_last_item', ['function ' + Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_ + '(&$list, $value) {', @@ -289,24 +292,26 @@ Blockly.PHP['lists_setIndex'] = function(block) { return 'array_push(' + list + ', ' + value + ');\n'; } break; - case 'FROM_START': - var at = Blockly.PHP.getAdjusted(block, 'AT'); + } + case 'FROM_START': { + const at = Blockly.PHP.getAdjusted(block, 'AT'); if (mode === 'SET') { - var list = Blockly.PHP.valueToCode(block, 'LIST', + const list = Blockly.PHP.valueToCode(block, 'LIST', Blockly.PHP.ORDER_MEMBER) || 'array()'; return list + '[' + at + '] = ' + value + ';\n'; } else if (mode === 'INSERT') { - var list = Blockly.PHP.valueToCode(block, 'LIST', + const list = Blockly.PHP.valueToCode(block, 'LIST', Blockly.PHP.ORDER_NONE) || 'array()'; return 'array_splice(' + list + ', ' + at + ', 0, ' + value + ');\n'; } break; - case 'FROM_END': - var list = Blockly.PHP.valueToCode(block, 'LIST', + } + case 'FROM_END': { + const list = Blockly.PHP.valueToCode(block, 'LIST', Blockly.PHP.ORDER_NONE) || 'array()'; - var at = Blockly.PHP.getAdjusted(block, 'AT', 1); + const at = Blockly.PHP.getAdjusted(block, 'AT', 1); if (mode === 'SET') { - var functionName = Blockly.PHP.provideFunction_( + const functionName = Blockly.PHP.provideFunction_( 'lists_set_from_end', ['function ' + Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_ + '(&$list, $at, $value) {', @@ -314,7 +319,7 @@ Blockly.PHP['lists_setIndex'] = function(block) { '}']); return functionName + '(' + list + ', ' + at + ', ' + value + ');\n'; } else if (mode === 'INSERT') { - var functionName = Blockly.PHP.provideFunction_( + const functionName = Blockly.PHP.provideFunction_( 'lists_insert_from_end', ['function ' + Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_ + '(&$list, $at, $value) {', @@ -323,11 +328,13 @@ Blockly.PHP['lists_setIndex'] = function(block) { return functionName + '(' + list + ', ' + at + ', ' + value + ');\n'; } break; + } case 'RANDOM': - var list = Blockly.PHP.valueToCode(block, 'LIST', + cachedList = Blockly.PHP.valueToCode(block, 'LIST', Blockly.PHP.ORDER_REFERENCE) || 'array()'; - var code = cacheList(); - var xVar = Blockly.PHP.nameDB_.getDistinctName( + let code = cacheList(); + const list = cachedList; + const xVar = Blockly.PHP.nameDB_.getDistinctName( 'tmp_x', Blockly.VARIABLE_CATEGORY_NAME); code += xVar + ' = rand(0, count(' + list + ')-1);\n'; if (mode === 'SET') { @@ -345,36 +352,40 @@ Blockly.PHP['lists_setIndex'] = function(block) { Blockly.PHP['lists_getSublist'] = function(block) { // Get sublist. - var list = Blockly.PHP.valueToCode(block, 'LIST', + const list = Blockly.PHP.valueToCode(block, 'LIST', Blockly.PHP.ORDER_NONE) || 'array()'; - var where1 = block.getFieldValue('WHERE1'); - var where2 = block.getFieldValue('WHERE2'); + const where1 = block.getFieldValue('WHERE1'); + const where2 = block.getFieldValue('WHERE2'); + let code; if (where1 === 'FIRST' && where2 === 'LAST') { - var code = list; + code = list; } else if (list.match(/^\$\w+$/) || (where1 !== 'FROM_END' && where2 === 'FROM_START')) { // If the list is a simple value or doesn't require a call for length, don't // generate a helper function. + let at1; switch (where1) { case 'FROM_START': - var at1 = Blockly.PHP.getAdjusted(block, 'AT1'); + at1 = Blockly.PHP.getAdjusted(block, 'AT1'); break; case 'FROM_END': - var at1 = Blockly.PHP.getAdjusted(block, 'AT1', 1, false, + at1 = Blockly.PHP.getAdjusted(block, 'AT1', 1, false, Blockly.PHP.ORDER_SUBTRACTION); at1 = 'count(' + list + ') - ' + at1; break; case 'FIRST': - var at1 = '0'; + at1 = '0'; break; default: throw Error('Unhandled option (lists_getSublist).'); } + let at2; + let length; switch (where2) { case 'FROM_START': - var at2 = Blockly.PHP.getAdjusted(block, 'AT2', 0, false, + at2 = Blockly.PHP.getAdjusted(block, 'AT2', 0, false, Blockly.PHP.ORDER_SUBTRACTION); - var length = at2 + ' - '; + length = at2 + ' - '; if (Blockly.isNumber(String(at1)) || String(at1).match(/^\(.+\)$/)) { length += at1; } else { @@ -383,9 +394,9 @@ Blockly.PHP['lists_getSublist'] = function(block) { length += ' + 1'; break; case 'FROM_END': - var at2 = Blockly.PHP.getAdjusted(block, 'AT2', 0, false, + at2 = Blockly.PHP.getAdjusted(block, 'AT2', 0, false, Blockly.PHP.ORDER_SUBTRACTION); - var length = 'count(' + list + ') - ' + at2 + ' - '; + length = 'count(' + list + ') - ' + at2 + ' - '; if (Blockly.isNumber(String(at1)) || String(at1).match(/^\(.+\)$/)) { length += at1; } else { @@ -393,7 +404,7 @@ Blockly.PHP['lists_getSublist'] = function(block) { } break; case 'LAST': - var length = 'count(' + list + ') - '; + length = 'count(' + list + ') - '; if (Blockly.isNumber(String(at1)) || String(at1).match(/^\(.+\)$/)) { length += at1; } else { @@ -405,9 +416,9 @@ Blockly.PHP['lists_getSublist'] = function(block) { } code = 'array_slice(' + list + ', ' + at1 + ', ' + length + ')'; } else { - var at1 = Blockly.PHP.getAdjusted(block, 'AT1'); - var at2 = Blockly.PHP.getAdjusted(block, 'AT2'); - var functionName = Blockly.PHP.provideFunction_( + const at1 = Blockly.PHP.getAdjusted(block, 'AT1'); + const at2 = Blockly.PHP.getAdjusted(block, 'AT2'); + const functionName = Blockly.PHP.provideFunction_( 'lists_get_sublist', ['function ' + Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_ + '($list, $where1, $at1, $where2, $at2) {', @@ -430,7 +441,7 @@ Blockly.PHP['lists_getSublist'] = function(block) { ' }', ' return array_slice($list, $at1, $length);', '}']); - var code = functionName + '(' + list + ', \'' + + code = functionName + '(' + list + ', \'' + where1 + '\', ' + at1 + ', \'' + where2 + '\', ' + at2 + ')'; } return [code, Blockly.PHP.ORDER_FUNCTION_CALL]; @@ -438,11 +449,11 @@ Blockly.PHP['lists_getSublist'] = function(block) { Blockly.PHP['lists_sort'] = function(block) { // Block for sorting a list. - var listCode = Blockly.PHP.valueToCode(block, 'LIST', + const listCode = Blockly.PHP.valueToCode(block, 'LIST', Blockly.PHP.ORDER_NONE) || 'array()'; - var direction = block.getFieldValue('DIRECTION') === '1' ? 1 : -1; - var type = block.getFieldValue('TYPE'); - var functionName = Blockly.PHP.provideFunction_( + const direction = block.getFieldValue('DIRECTION') === '1' ? 1 : -1; + const type = block.getFieldValue('TYPE'); + const functionName = Blockly.PHP.provideFunction_( 'lists_sort', ['function ' + Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_ + '($list, $type, $direction) {', @@ -459,39 +470,40 @@ Blockly.PHP['lists_sort'] = function(block) { ' }', ' return $list2;', '}']); - var sortCode = functionName + + const sortCode = functionName + '(' + listCode + ', "' + type + '", ' + direction + ')'; return [sortCode, Blockly.PHP.ORDER_FUNCTION_CALL]; }; Blockly.PHP['lists_split'] = function(block) { // Block for splitting text into a list, or joining a list into text. - var value_input = Blockly.PHP.valueToCode(block, 'INPUT', + let value_input = Blockly.PHP.valueToCode(block, 'INPUT', Blockly.PHP.ORDER_NONE); - var value_delim = Blockly.PHP.valueToCode(block, 'DELIM', + const value_delim = Blockly.PHP.valueToCode(block, 'DELIM', Blockly.PHP.ORDER_NONE) || '\'\''; - var mode = block.getFieldValue('MODE'); + const mode = block.getFieldValue('MODE'); + let functionName; if (mode === 'SPLIT') { if (!value_input) { value_input = '\'\''; } - var functionName = 'explode'; + functionName = 'explode'; } else if (mode === 'JOIN') { if (!value_input) { value_input = 'array()'; } - var functionName = 'implode'; + functionName = 'implode'; } else { throw Error('Unknown mode: ' + mode); } - var code = functionName + '(' + value_delim + ', ' + value_input + ')'; + const code = functionName + '(' + value_delim + ', ' + value_input + ')'; return [code, Blockly.PHP.ORDER_FUNCTION_CALL]; }; Blockly.PHP['lists_reverse'] = function(block) { // Block for reversing a list. - var list = Blockly.PHP.valueToCode(block, 'LIST', + const list = Blockly.PHP.valueToCode(block, 'LIST', Blockly.PHP.ORDER_NONE) || '[]'; - var code = 'array_reverse(' + list + ')'; + const code = 'array_reverse(' + list + ')'; return [code, Blockly.PHP.ORDER_FUNCTION_CALL]; }; diff --git a/generators/php/logic.js b/generators/php/logic.js index b36c3ac6d..de632f1fe 100644 --- a/generators/php/logic.js +++ b/generators/php/logic.js @@ -16,8 +16,8 @@ goog.require('Blockly.PHP'); Blockly.PHP['controls_if'] = function(block) { // If/elseif/else condition. - var n = 0; - var code = '', branchCode, conditionCode; + let n = 0; + let code = '', branchCode, conditionCode; if (Blockly.PHP.STATEMENT_PREFIX) { // Automatic prefix insertion is switched off for this block. Add manually. code += Blockly.PHP.injectId(Blockly.PHP.STATEMENT_PREFIX, block); @@ -52,7 +52,7 @@ Blockly.PHP['controls_ifelse'] = Blockly.PHP['controls_if']; Blockly.PHP['logic_compare'] = function(block) { // Comparison operator. - var OPERATORS = { + const OPERATORS = { 'EQ': '==', 'NEQ': '!=', 'LT': '<', @@ -60,29 +60,29 @@ Blockly.PHP['logic_compare'] = function(block) { 'GT': '>', 'GTE': '>=' }; - var operator = OPERATORS[block.getFieldValue('OP')]; - var order = (operator === '==' || operator === '!=') ? + const operator = OPERATORS[block.getFieldValue('OP')]; + const order = (operator === '==' || operator === '!=') ? Blockly.PHP.ORDER_EQUALITY : Blockly.PHP.ORDER_RELATIONAL; - var argument0 = Blockly.PHP.valueToCode(block, 'A', order) || '0'; - var argument1 = Blockly.PHP.valueToCode(block, 'B', order) || '0'; - var code = argument0 + ' ' + operator + ' ' + argument1; + const argument0 = Blockly.PHP.valueToCode(block, 'A', order) || '0'; + const argument1 = Blockly.PHP.valueToCode(block, 'B', order) || '0'; + const code = argument0 + ' ' + operator + ' ' + argument1; return [code, order]; }; Blockly.PHP['logic_operation'] = function(block) { // Operations 'and', 'or'. - var operator = (block.getFieldValue('OP') === 'AND') ? '&&' : '||'; - var order = (operator === '&&') ? Blockly.PHP.ORDER_LOGICAL_AND : + const operator = (block.getFieldValue('OP') === 'AND') ? '&&' : '||'; + const order = (operator === '&&') ? Blockly.PHP.ORDER_LOGICAL_AND : Blockly.PHP.ORDER_LOGICAL_OR; - var argument0 = Blockly.PHP.valueToCode(block, 'A', order); - var argument1 = Blockly.PHP.valueToCode(block, 'B', order); + let argument0 = Blockly.PHP.valueToCode(block, 'A', order); + let argument1 = Blockly.PHP.valueToCode(block, 'B', order); if (!argument0 && !argument1) { // If there are no arguments, then the return value is false. argument0 = 'false'; argument1 = 'false'; } else { // Single missing arguments have no effect on the return value. - var defaultArgument = (operator === '&&') ? 'true' : 'false'; + const defaultArgument = (operator === '&&') ? 'true' : 'false'; if (!argument0) { argument0 = defaultArgument; } @@ -90,22 +90,22 @@ Blockly.PHP['logic_operation'] = function(block) { argument1 = defaultArgument; } } - var code = argument0 + ' ' + operator + ' ' + argument1; + const code = argument0 + ' ' + operator + ' ' + argument1; return [code, order]; }; Blockly.PHP['logic_negate'] = function(block) { // Negation. - var order = Blockly.PHP.ORDER_LOGICAL_NOT; - var argument0 = Blockly.PHP.valueToCode(block, 'BOOL', order) || + const order = Blockly.PHP.ORDER_LOGICAL_NOT; + const argument0 = Blockly.PHP.valueToCode(block, 'BOOL', order) || 'true'; - var code = '!' + argument0; + const code = '!' + argument0; return [code, order]; }; Blockly.PHP['logic_boolean'] = function(block) { // Boolean values true and false. - var code = (block.getFieldValue('BOOL') === 'TRUE') ? 'true' : 'false'; + const code = (block.getFieldValue('BOOL') === 'TRUE') ? 'true' : 'false'; return [code, Blockly.PHP.ORDER_ATOMIC]; }; @@ -116,12 +116,12 @@ Blockly.PHP['logic_null'] = function(block) { Blockly.PHP['logic_ternary'] = function(block) { // Ternary operator. - var value_if = Blockly.PHP.valueToCode(block, 'IF', + const value_if = Blockly.PHP.valueToCode(block, 'IF', Blockly.PHP.ORDER_CONDITIONAL) || 'false'; - var value_then = Blockly.PHP.valueToCode(block, 'THEN', + const value_then = Blockly.PHP.valueToCode(block, 'THEN', Blockly.PHP.ORDER_CONDITIONAL) || 'null'; - var value_else = Blockly.PHP.valueToCode(block, 'ELSE', + const value_else = Blockly.PHP.valueToCode(block, 'ELSE', Blockly.PHP.ORDER_CONDITIONAL) || 'null'; - var code = value_if + ' ? ' + value_then + ' : ' + value_else; + const code = value_if + ' ? ' + value_then + ' : ' + value_else; return [code, Blockly.PHP.ORDER_CONDITIONAL]; }; diff --git a/generators/php/loops.js b/generators/php/loops.js index f9eb23f36..efc38f654 100644 --- a/generators/php/loops.js +++ b/generators/php/loops.js @@ -16,20 +16,21 @@ goog.require('Blockly.PHP'); Blockly.PHP['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.PHP.valueToCode(block, 'TIMES', + repeats = Blockly.PHP.valueToCode(block, 'TIMES', Blockly.PHP.ORDER_ASSIGNMENT) || '0'; } - var branch = Blockly.PHP.statementToCode(block, 'DO'); + let branch = Blockly.PHP.statementToCode(block, 'DO'); branch = Blockly.PHP.addLoopTrap(branch, block); - var code = ''; - var loopVar = Blockly.PHP.nameDB_.getDistinctName( + let code = ''; + const loopVar = Blockly.PHP.nameDB_.getDistinctName( 'count', Blockly.VARIABLE_CATEGORY_NAME); - var endVar = repeats; + let endVar = repeats; if (!repeats.match(/^\w+$/) && !Blockly.isNumber(repeats)) { endVar = Blockly.PHP.nameDB_.getDistinctName( 'repeat_end', Blockly.VARIABLE_CATEGORY_NAME); @@ -46,11 +47,11 @@ Blockly.PHP['controls_repeat'] = Blockly.PHP['controls_repeat_ext']; Blockly.PHP['controls_whileUntil'] = function(block) { // Do while/until loop. - var until = block.getFieldValue('MODE') === 'UNTIL'; - var argument0 = Blockly.PHP.valueToCode(block, 'BOOL', + const until = block.getFieldValue('MODE') === 'UNTIL'; + let argument0 = Blockly.PHP.valueToCode(block, 'BOOL', until ? Blockly.PHP.ORDER_LOGICAL_NOT : Blockly.PHP.ORDER_NONE) || 'false'; - var branch = Blockly.PHP.statementToCode(block, 'DO'); + let branch = Blockly.PHP.statementToCode(block, 'DO'); branch = Blockly.PHP.addLoopTrap(branch, block); if (until) { argument0 = '!' + argument0; @@ -60,25 +61,25 @@ Blockly.PHP['controls_whileUntil'] = function(block) { Blockly.PHP['controls_for'] = function(block) { // For loop. - var variable0 = Blockly.PHP.nameDB_.getName( + const variable0 = Blockly.PHP.nameDB_.getName( block.getFieldValue('VAR'), Blockly.VARIABLE_CATEGORY_NAME); - var argument0 = Blockly.PHP.valueToCode(block, 'FROM', + const argument0 = Blockly.PHP.valueToCode(block, 'FROM', Blockly.PHP.ORDER_ASSIGNMENT) || '0'; - var argument1 = Blockly.PHP.valueToCode(block, 'TO', + const argument1 = Blockly.PHP.valueToCode(block, 'TO', Blockly.PHP.ORDER_ASSIGNMENT) || '0'; - var increment = Blockly.PHP.valueToCode(block, 'BY', + const increment = Blockly.PHP.valueToCode(block, 'BY', Blockly.PHP.ORDER_ASSIGNMENT) || '1'; - var branch = Blockly.PHP.statementToCode(block, 'DO'); + let branch = Blockly.PHP.statementToCode(block, 'DO'); branch = Blockly.PHP.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 { @@ -88,13 +89,13 @@ Blockly.PHP['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.PHP.nameDB_.getDistinctName( variable0 + '_start', Blockly.VARIABLE_CATEGORY_NAME); code += startVar + ' = ' + argument0 + ';\n'; } - var endVar = argument1; + let endVar = argument1; if (!argument1.match(/^\w+$/) && !Blockly.isNumber(argument1)) { endVar = Blockly.PHP.nameDB_.getDistinctName( variable0 + '_end', Blockly.VARIABLE_CATEGORY_NAME); @@ -102,7 +103,7 @@ Blockly.PHP['controls_for'] = function(block) { } // Determine loop direction at start, in case one of the bounds // changes during loop execution. - var incVar = Blockly.PHP.nameDB_.getDistinctName( + const incVar = Blockly.PHP.nameDB_.getDistinctName( variable0 + '_inc', Blockly.VARIABLE_CATEGORY_NAME); code += incVar + ' = '; if (Blockly.isNumber(increment)) { @@ -125,13 +126,13 @@ Blockly.PHP['controls_for'] = function(block) { Blockly.PHP['controls_forEach'] = function(block) { // For each loop. - var variable0 = Blockly.PHP.nameDB_.getName( + const variable0 = Blockly.PHP.nameDB_.getName( block.getFieldValue('VAR'), Blockly.VARIABLE_CATEGORY_NAME); - var argument0 = Blockly.PHP.valueToCode(block, 'LIST', + const argument0 = Blockly.PHP.valueToCode(block, 'LIST', Blockly.PHP.ORDER_ASSIGNMENT) || '[]'; - var branch = Blockly.PHP.statementToCode(block, 'DO'); + let branch = Blockly.PHP.statementToCode(block, 'DO'); branch = Blockly.PHP.addLoopTrap(branch, block); - var code = ''; + let code = ''; code += 'foreach (' + argument0 + ' as ' + variable0 + ') {\n' + branch + '}\n'; return code; @@ -139,7 +140,7 @@ Blockly.PHP['controls_forEach'] = function(block) { Blockly.PHP['controls_flow_statements'] = function(block) { // Flow statements: continue, break. - var xfix = ''; + let xfix = ''; if (Blockly.PHP.STATEMENT_PREFIX) { // Automatic prefix insertion is switched off for this block. Add manually. xfix += Blockly.PHP.injectId(Blockly.PHP.STATEMENT_PREFIX, block); @@ -150,7 +151,7 @@ Blockly.PHP['controls_flow_statements'] = function(block) { xfix += Blockly.PHP.injectId(Blockly.PHP.STATEMENT_SUFFIX, block); } if (Blockly.PHP.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 diff --git a/generators/php/math.js b/generators/php/math.js index 4b375b564..a442ca7ab 100644 --- a/generators/php/math.js +++ b/generators/php/math.js @@ -16,8 +16,8 @@ goog.require('Blockly.PHP'); Blockly.PHP['math_number'] = function(block) { // Numeric value. - var code = Number(block.getFieldValue('NUM')); - var order = code >= 0 ? Blockly.PHP.ORDER_ATOMIC : + let code = Number(block.getFieldValue('NUM')); + const order = code >= 0 ? Blockly.PHP.ORDER_ATOMIC : Blockly.PHP.ORDER_UNARY_NEGATION; if (code === Infinity) { code = 'INF'; @@ -29,27 +29,27 @@ Blockly.PHP['math_number'] = function(block) { Blockly.PHP['math_arithmetic'] = function(block) { // Basic arithmetic operators, and power. - var OPERATORS = { + const OPERATORS = { 'ADD': [' + ', Blockly.PHP.ORDER_ADDITION], 'MINUS': [' - ', Blockly.PHP.ORDER_SUBTRACTION], 'MULTIPLY': [' * ', Blockly.PHP.ORDER_MULTIPLICATION], 'DIVIDE': [' / ', Blockly.PHP.ORDER_DIVISION], 'POWER': [' ** ', Blockly.PHP.ORDER_POWER] }; - var tuple = OPERATORS[block.getFieldValue('OP')]; - var operator = tuple[0]; - var order = tuple[1]; - var argument0 = Blockly.PHP.valueToCode(block, 'A', order) || '0'; - var argument1 = Blockly.PHP.valueToCode(block, 'B', order) || '0'; - var code = argument0 + operator + argument1; + const tuple = OPERATORS[block.getFieldValue('OP')]; + const operator = tuple[0]; + const order = tuple[1]; + const argument0 = Blockly.PHP.valueToCode(block, 'A', order) || '0'; + const argument1 = Blockly.PHP.valueToCode(block, 'B', order) || '0'; + const code = argument0 + operator + argument1; return [code, order]; }; Blockly.PHP['math_single'] = function(block) { // Math operators with single operand. - var operator = block.getFieldValue('OP'); - var code; - var arg; + const operator = block.getFieldValue('OP'); + let code; + let arg; if (operator === 'NEG') { // Negation is a special case given its different operator precedence. arg = Blockly.PHP.valueToCode(block, 'NUM', @@ -131,7 +131,7 @@ Blockly.PHP['math_single'] = function(block) { Blockly.PHP['math_constant'] = function(block) { // Constants: PI, E, the Golden Ratio, sqrt(2), 1/sqrt(2), INFINITY. - var CONSTANTS = { + const CONSTANTS = { 'PI': ['M_PI', Blockly.PHP.ORDER_ATOMIC], 'E': ['M_E', Blockly.PHP.ORDER_ATOMIC], 'GOLDEN_RATIO': ['(1 + sqrt(5)) / 2', Blockly.PHP.ORDER_DIVISION], @@ -145,13 +145,13 @@ Blockly.PHP['math_constant'] = function(block) { Blockly.PHP['math_number_property'] = function(block) { // Check if a number is even, odd, prime, whole, positive, or negative // or if it is divisible by certain number. Returns true or false. - var number_to_check = Blockly.PHP.valueToCode(block, 'NUMBER_TO_CHECK', + const number_to_check = Blockly.PHP.valueToCode(block, 'NUMBER_TO_CHECK', Blockly.PHP.ORDER_MODULUS) || '0'; - var dropdown_property = block.getFieldValue('PROPERTY'); - var code; + const dropdown_property = block.getFieldValue('PROPERTY'); + let code; if (dropdown_property === 'PRIME') { // Prime is a special case as it is not a one-liner test. - var functionName = Blockly.PHP.provideFunction_( + const functionName = Blockly.PHP.provideFunction_( 'math_isPrime', ['function ' + Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_ + '($n) {', ' // https://en.wikipedia.org/wiki/Primality_test#Naive_methods', @@ -191,20 +191,21 @@ Blockly.PHP['math_number_property'] = function(block) { case 'NEGATIVE': code = number_to_check + ' < 0'; break; - case 'DIVISIBLE_BY': - var divisor = Blockly.PHP.valueToCode(block, 'DIVISOR', + case 'DIVISIBLE_BY': { + const divisor = Blockly.PHP.valueToCode(block, 'DIVISOR', Blockly.PHP.ORDER_MODULUS) || '0'; code = number_to_check + ' % ' + divisor + ' == 0'; break; + } } return [code, Blockly.PHP.ORDER_EQUALITY]; }; Blockly.PHP['math_change'] = function(block) { // Add to a variable in place. - var argument0 = Blockly.PHP.valueToCode(block, 'DELTA', + const argument0 = Blockly.PHP.valueToCode(block, 'DELTA', Blockly.PHP.ORDER_ADDITION) || '0'; - var varName = Blockly.PHP.nameDB_.getName( + const varName = Blockly.PHP.nameDB_.getName( block.getFieldValue('VAR'), Blockly.VARIABLE_CATEGORY_NAME); return varName + ' += ' + argument0 + ';\n'; }; @@ -216,8 +217,9 @@ Blockly.PHP['math_trig'] = Blockly.PHP['math_single']; Blockly.PHP['math_on_list'] = function(block) { // Math functions for lists. - var func = block.getFieldValue('OP'); - var list, code; + const func = block.getFieldValue('OP'); + let list; + let code; switch (func) { case 'SUM': list = Blockly.PHP.valueToCode(block, 'LIST', @@ -234,8 +236,8 @@ Blockly.PHP['math_on_list'] = function(block) { Blockly.PHP.ORDER_FUNCTION_CALL) || 'array()'; code = 'max(' + list + ')'; break; - case 'AVERAGE': - var functionName = Blockly.PHP.provideFunction_( + case 'AVERAGE': { + const functionName = Blockly.PHP.provideFunction_( 'math_mean', ['function ' + Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_ + '($myList) {', @@ -245,8 +247,9 @@ Blockly.PHP['math_on_list'] = function(block) { Blockly.PHP.ORDER_NONE) || 'array()'; code = functionName + '(' + list + ')'; break; - case 'MEDIAN': - var functionName = Blockly.PHP.provideFunction_( + } + case 'MEDIAN': { + const functionName = Blockly.PHP.provideFunction_( 'math_median', ['function ' + Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_ + '($arr) {', @@ -259,11 +262,12 @@ Blockly.PHP['math_on_list'] = function(block) { Blockly.PHP.ORDER_NONE) || '[]'; code = functionName + '(' + list + ')'; break; - case 'MODE': + } + case 'MODE': { // As a list of numbers can contain more than one mode, // the returned result is provided as an array. // Mode of [3, 'x', 'x', 1, 1, 2, '3'] -> ['x', 1]. - var functionName = Blockly.PHP.provideFunction_( + const functionName = Blockly.PHP.provideFunction_( 'math_modes', ['function ' + Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_ + '($values) {', @@ -277,8 +281,9 @@ Blockly.PHP['math_on_list'] = function(block) { Blockly.PHP.ORDER_NONE) || '[]'; code = functionName + '(' + list + ')'; break; - case 'STD_DEV': - var functionName = Blockly.PHP.provideFunction_( + } + case 'STD_DEV': { + const functionName = Blockly.PHP.provideFunction_( 'math_standard_deviation', ['function ' + Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_ + '($numbers) {', @@ -293,8 +298,9 @@ Blockly.PHP['math_on_list'] = function(block) { Blockly.PHP.ORDER_NONE) || '[]'; code = functionName + '(' + list + ')'; break; - case 'RANDOM': - var functionName = Blockly.PHP.provideFunction_( + } + case 'RANDOM': { + const functionName = Blockly.PHP.provideFunction_( 'math_random_list', ['function ' + Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_ + '($list) {', @@ -305,6 +311,7 @@ Blockly.PHP['math_on_list'] = function(block) { Blockly.PHP.ORDER_NONE) || '[]'; code = functionName + '(' + list + ')'; break; + } default: throw Error('Unknown operator: ' + func); } @@ -313,34 +320,34 @@ Blockly.PHP['math_on_list'] = function(block) { Blockly.PHP['math_modulo'] = function(block) { // Remainder computation. - var argument0 = Blockly.PHP.valueToCode(block, 'DIVIDEND', + const argument0 = Blockly.PHP.valueToCode(block, 'DIVIDEND', Blockly.PHP.ORDER_MODULUS) || '0'; - var argument1 = Blockly.PHP.valueToCode(block, 'DIVISOR', + const argument1 = Blockly.PHP.valueToCode(block, 'DIVISOR', Blockly.PHP.ORDER_MODULUS) || '0'; - var code = argument0 + ' % ' + argument1; + const code = argument0 + ' % ' + argument1; return [code, Blockly.PHP.ORDER_MODULUS]; }; Blockly.PHP['math_constrain'] = function(block) { // Constrain a number between two limits. - var argument0 = Blockly.PHP.valueToCode(block, 'VALUE', + const argument0 = Blockly.PHP.valueToCode(block, 'VALUE', Blockly.PHP.ORDER_NONE) || '0'; - var argument1 = Blockly.PHP.valueToCode(block, 'LOW', + const argument1 = Blockly.PHP.valueToCode(block, 'LOW', Blockly.PHP.ORDER_NONE) || '0'; - var argument2 = Blockly.PHP.valueToCode(block, 'HIGH', + const argument2 = Blockly.PHP.valueToCode(block, 'HIGH', Blockly.PHP.ORDER_NONE) || 'Infinity'; - var code = 'min(max(' + argument0 + ', ' + argument1 + '), ' + + const code = 'min(max(' + argument0 + ', ' + argument1 + '), ' + argument2 + ')'; return [code, Blockly.PHP.ORDER_FUNCTION_CALL]; }; Blockly.PHP['math_random_int'] = function(block) { // Random integer between [X] and [Y]. - var argument0 = Blockly.PHP.valueToCode(block, 'FROM', + const argument0 = Blockly.PHP.valueToCode(block, 'FROM', Blockly.PHP.ORDER_NONE) || '0'; - var argument1 = Blockly.PHP.valueToCode(block, 'TO', + const argument1 = Blockly.PHP.valueToCode(block, 'TO', Blockly.PHP.ORDER_NONE) || '0'; - var functionName = Blockly.PHP.provideFunction_( + const functionName = Blockly.PHP.provideFunction_( 'math_random_int', ['function ' + Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_ + '($a, $b) {', @@ -349,7 +356,7 @@ Blockly.PHP['math_random_int'] = function(block) { ' }', ' return rand($a, $b);', '}']); - var code = functionName + '(' + argument0 + ', ' + argument1 + ')'; + const code = functionName + '(' + argument0 + ', ' + argument1 + ')'; return [code, Blockly.PHP.ORDER_FUNCTION_CALL]; }; @@ -360,9 +367,9 @@ Blockly.PHP['math_random_float'] = function(block) { Blockly.PHP['math_atan2'] = function(block) { // Arctangent of point (X, Y) in degrees from -180 to 180. - var argument0 = Blockly.PHP.valueToCode(block, 'X', + const argument0 = Blockly.PHP.valueToCode(block, 'X', Blockly.PHP.ORDER_NONE) || '0'; - var argument1 = Blockly.PHP.valueToCode(block, 'Y', + const argument1 = Blockly.PHP.valueToCode(block, 'Y', Blockly.PHP.ORDER_NONE) || '0'; return ['atan2(' + argument1 + ', ' + argument0 + ') / pi() * 180', Blockly.PHP.ORDER_DIVISION]; diff --git a/generators/php/procedures.js b/generators/php/procedures.js index 6002dbe87..9b7ab47d6 100644 --- a/generators/php/procedures.js +++ b/generators/php/procedures.js @@ -18,28 +18,28 @@ Blockly.PHP['procedures_defreturn'] = function(block) { // Define a procedure with a return value. // First, add a 'global' statement for every variable that is not shadowed by // a local parameter. - var globals = []; - var workspace = block.workspace; - var variables = Blockly.Variables.allUsedVarModels(workspace) || []; - for (var i = 0, variable; variable = variables[i]; i++) { - var varName = variable.name; + const globals = []; + const workspace = block.workspace; + const usedVariables = Blockly.Variables.allUsedVarModels(workspace) || []; + for (let i = 0, variable; variable = usedVariables[i]; i++) { + const varName = variable.name; if (block.getVars().indexOf(varName) === -1) { globals.push(Blockly.PHP.nameDB_.getName(varName, Blockly.VARIABLE_CATEGORY_NAME)); } } // Add developer variables. - var devVarList = Blockly.Variables.allDeveloperVariables(workspace); - for (var i = 0; i < devVarList.length; i++) { + const devVarList = Blockly.Variables.allDeveloperVariables(workspace); + for (let i = 0; i < devVarList.length; i++) { globals.push(Blockly.PHP.nameDB_.getName(devVarList[i], Blockly.Names.DEVELOPER_VARIABLE_TYPE)); } - globals = globals.length ? + const globalStr = globals.length ? Blockly.PHP.INDENT + 'global ' + globals.join(', ') + ';\n' : ''; - var funcName = Blockly.PHP.nameDB_.getName( + const funcName = Blockly.PHP.nameDB_.getName( block.getFieldValue('NAME'), Blockly.PROCEDURE_CATEGORY_NAME); - var xfix1 = ''; + let xfix1 = ''; if (Blockly.PHP.STATEMENT_PREFIX) { xfix1 += Blockly.PHP.injectId(Blockly.PHP.STATEMENT_PREFIX, block); } @@ -49,16 +49,16 @@ Blockly.PHP['procedures_defreturn'] = function(block) { if (xfix1) { xfix1 = Blockly.PHP.prefixLines(xfix1, Blockly.PHP.INDENT); } - var loopTrap = ''; + let loopTrap = ''; if (Blockly.PHP.INFINITE_LOOP_TRAP) { loopTrap = Blockly.PHP.prefixLines( Blockly.PHP.injectId(Blockly.PHP.INFINITE_LOOP_TRAP, block), Blockly.PHP.INDENT); } - var branch = Blockly.PHP.statementToCode(block, 'STACK'); - var returnValue = Blockly.PHP.valueToCode(block, 'RETURN', + const branch = Blockly.PHP.statementToCode(block, 'STACK'); + let returnValue = Blockly.PHP.valueToCode(block, 'RETURN', Blockly.PHP.ORDER_NONE) || ''; - var xfix2 = ''; + let xfix2 = ''; if (branch && returnValue) { // After executing the function body, revisit this block for the return. xfix2 = xfix1; @@ -66,14 +66,14 @@ Blockly.PHP['procedures_defreturn'] = function(block) { if (returnValue) { returnValue = Blockly.PHP.INDENT + 'return ' + returnValue + ';\n'; } - var args = []; - var variables = block.getVars(); - for (var i = 0; i < variables.length; i++) { + const args = []; + const variables = block.getVars(); + for (let i = 0; i < variables.length; i++) { args[i] = Blockly.PHP.nameDB_.getName(variables[i], Blockly.VARIABLE_CATEGORY_NAME); } - var code = 'function ' + funcName + '(' + args.join(', ') + ') {\n' + - globals + xfix1 + loopTrap + branch + xfix2 + returnValue + '}'; + let code = 'function ' + funcName + '(' + args.join(', ') + ') {\n' + + globalStr + xfix1 + loopTrap + branch + xfix2 + returnValue + '}'; code = Blockly.PHP.scrub_(block, code); // Add % so as not to collide with helper functions in definitions list. Blockly.PHP.definitions_['%' + funcName] = code; @@ -87,15 +87,15 @@ Blockly.PHP['procedures_defnoreturn'] = Blockly.PHP['procedures_callreturn'] = function(block) { // Call a procedure with a return value. - var funcName = Blockly.PHP.nameDB_.getName( + const funcName = Blockly.PHP.nameDB_.getName( block.getFieldValue('NAME'), Blockly.PROCEDURE_CATEGORY_NAME); - var args = []; - var variables = block.getVars(); - for (var i = 0; i < variables.length; i++) { + const args = []; + const variables = block.getVars(); + for (let i = 0; i < variables.length; i++) { args[i] = Blockly.PHP.valueToCode(block, 'ARG' + i, Blockly.PHP.ORDER_NONE) || 'null'; } - var code = funcName + '(' + args.join(', ') + ')'; + const code = funcName + '(' + args.join(', ') + ')'; return [code, Blockly.PHP.ORDER_FUNCTION_CALL]; }; @@ -103,15 +103,15 @@ Blockly.PHP['procedures_callnoreturn'] = function(block) { // Call a procedure with no return value. // Generated code is for a function call as a statement is the same as a // function call as a value, with the addition of line ending. - var tuple = Blockly.PHP['procedures_callreturn'](block); + const tuple = Blockly.PHP['procedures_callreturn'](block); return tuple[0] + ';\n'; }; Blockly.PHP['procedures_ifreturn'] = function(block) { // Conditionally return value from a procedure. - var condition = Blockly.PHP.valueToCode(block, 'CONDITION', + const condition = Blockly.PHP.valueToCode(block, 'CONDITION', Blockly.PHP.ORDER_NONE) || 'false'; - var code = 'if (' + condition + ') {\n'; + let 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. @@ -120,7 +120,7 @@ Blockly.PHP['procedures_ifreturn'] = function(block) { Blockly.PHP.INDENT); } if (block.hasReturnValue_) { - var value = Blockly.PHP.valueToCode(block, 'VALUE', + const value = Blockly.PHP.valueToCode(block, 'VALUE', Blockly.PHP.ORDER_NONE) || 'null'; code += Blockly.PHP.INDENT + 'return ' + value + ';\n'; } else { diff --git a/generators/php/text.js b/generators/php/text.js index cb71706cf..08fde44de 100644 --- a/generators/php/text.js +++ b/generators/php/text.js @@ -16,14 +16,14 @@ goog.require('Blockly.PHP'); Blockly.PHP['text'] = function(block) { // Text value. - var code = Blockly.PHP.quote_(block.getFieldValue('TEXT')); + const code = Blockly.PHP.quote_(block.getFieldValue('TEXT')); return [code, Blockly.PHP.ORDER_ATOMIC]; }; Blockly.PHP['text_multiline'] = function(block) { // Text value. - var code = Blockly.PHP.multiline_quote_(block.getFieldValue('TEXT')); - var order = code.indexOf('.') !== -1 ? Blockly.PHP.ORDER_STRING_CONCAT : + const code = Blockly.PHP.multiline_quote_(block.getFieldValue('TEXT')); + const order = code.indexOf('.') !== -1 ? Blockly.PHP.ORDER_STRING_CONCAT : Blockly.PHP.ORDER_ATOMIC; return [code, order]; }; @@ -33,40 +33,40 @@ Blockly.PHP['text_join'] = function(block) { if (block.itemCount_ === 0) { return ['\'\'', Blockly.PHP.ORDER_ATOMIC]; } else if (block.itemCount_ === 1) { - var element = Blockly.PHP.valueToCode(block, 'ADD0', + const element = Blockly.PHP.valueToCode(block, 'ADD0', Blockly.PHP.ORDER_NONE) || '\'\''; - var code = element; + const code = element; return [code, Blockly.PHP.ORDER_NONE]; } else if (block.itemCount_ === 2) { - var element0 = Blockly.PHP.valueToCode(block, 'ADD0', + const element0 = Blockly.PHP.valueToCode(block, 'ADD0', Blockly.PHP.ORDER_STRING_CONCAT) || '\'\''; - var element1 = Blockly.PHP.valueToCode(block, 'ADD1', + const element1 = Blockly.PHP.valueToCode(block, 'ADD1', Blockly.PHP.ORDER_STRING_CONCAT) || '\'\''; - var code = element0 + ' . ' + element1; + const code = element0 + ' . ' + element1; return [code, Blockly.PHP.ORDER_STRING_CONCAT]; } else { - var elements = new Array(block.itemCount_); - for (var i = 0; i < block.itemCount_; i++) { + const elements = new Array(block.itemCount_); + for (let i = 0; i < block.itemCount_; i++) { elements[i] = Blockly.PHP.valueToCode(block, 'ADD' + i, Blockly.PHP.ORDER_NONE) || '\'\''; } - var code = 'implode(\'\', array(' + elements.join(',') + '))'; + const code = 'implode(\'\', array(' + elements.join(',') + '))'; return [code, Blockly.PHP.ORDER_FUNCTION_CALL]; } }; Blockly.PHP['text_append'] = function(block) { // Append to a variable in place. - var varName = Blockly.PHP.nameDB_.getName( + const varName = Blockly.PHP.nameDB_.getName( block.getFieldValue('VAR'), Blockly.VARIABLE_CATEGORY_NAME); - var value = Blockly.PHP.valueToCode(block, 'TEXT', + const value = Blockly.PHP.valueToCode(block, 'TEXT', Blockly.PHP.ORDER_ASSIGNMENT) || '\'\''; return varName + ' .= ' + value + ';\n'; }; Blockly.PHP['text_length'] = function(block) { // String or array length. - var functionName = Blockly.PHP.provideFunction_( + const functionName = Blockly.PHP.provideFunction_( 'length', ['function ' + Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_ + '($value) {', ' if (is_string($value)) {', @@ -75,34 +75,33 @@ Blockly.PHP['text_length'] = function(block) { ' return count($value);', ' }', '}']); - var text = Blockly.PHP.valueToCode(block, 'VALUE', + const text = Blockly.PHP.valueToCode(block, 'VALUE', Blockly.PHP.ORDER_NONE) || '\'\''; return [functionName + '(' + text + ')', Blockly.PHP.ORDER_FUNCTION_CALL]; }; Blockly.PHP['text_isEmpty'] = function(block) { // Is the string null or array empty? - var text = Blockly.PHP.valueToCode(block, 'VALUE', + const text = Blockly.PHP.valueToCode(block, 'VALUE', Blockly.PHP.ORDER_NONE) || '\'\''; return ['empty(' + text + ')', Blockly.PHP.ORDER_FUNCTION_CALL]; }; Blockly.PHP['text_indexOf'] = function(block) { // Search the text for a substring. - var operator = block.getFieldValue('END') === 'FIRST' ? + const operator = block.getFieldValue('END') === 'FIRST' ? 'strpos' : 'strrpos'; - var substring = Blockly.PHP.valueToCode(block, 'FIND', + const substring = Blockly.PHP.valueToCode(block, 'FIND', Blockly.PHP.ORDER_NONE) || '\'\''; - var text = Blockly.PHP.valueToCode(block, 'VALUE', + const text = Blockly.PHP.valueToCode(block, 'VALUE', Blockly.PHP.ORDER_NONE) || '\'\''; + let errorIndex = ' -1'; + let indexAdjustment = ''; if (block.workspace.options.oneBasedIndex) { - var errorIndex = ' 0'; - var indexAdjustment = ' + 1'; - } else { - var errorIndex = ' -1'; - var indexAdjustment = ''; + errorIndex = ' 0'; + indexAdjustment = ' + 1'; } - var functionName = Blockly.PHP.provideFunction_( + const functionName = Blockly.PHP.provideFunction_( block.getFieldValue('END') === 'FIRST' ? 'text_indexOf' : 'text_lastIndexOf', ['function ' + Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_ + @@ -111,56 +110,61 @@ Blockly.PHP['text_indexOf'] = function(block) { ' return $pos === false ? ' + errorIndex + ' : $pos' + indexAdjustment + ';', '}']); - var code = functionName + '(' + text + ', ' + substring + ')'; + const code = functionName + '(' + text + ', ' + substring + ')'; return [code, Blockly.PHP.ORDER_FUNCTION_CALL]; }; Blockly.PHP['text_charAt'] = function(block) { // Get letter at index. - var where = block.getFieldValue('WHERE') || 'FROM_START'; - var textOrder = (where === 'RANDOM') ? Blockly.PHP.ORDER_NONE : + const where = block.getFieldValue('WHERE') || 'FROM_START'; + const textOrder = (where === 'RANDOM') ? Blockly.PHP.ORDER_NONE : Blockly.PHP.ORDER_NONE; - var text = Blockly.PHP.valueToCode(block, 'VALUE', textOrder) || '\'\''; + const text = Blockly.PHP.valueToCode(block, 'VALUE', textOrder) || '\'\''; switch (where) { - case 'FIRST': - var code = 'substr(' + text + ', 0, 1)'; + case 'FIRST': { + const code = 'substr(' + text + ', 0, 1)'; return [code, Blockly.PHP.ORDER_FUNCTION_CALL]; - case 'LAST': - var code = 'substr(' + text + ', -1)'; + } + case 'LAST': { + const code = 'substr(' + text + ', -1)'; return [code, Blockly.PHP.ORDER_FUNCTION_CALL]; - case 'FROM_START': - var at = Blockly.PHP.getAdjusted(block, 'AT'); - var code = 'substr(' + text + ', ' + at + ', 1)'; + } + case 'FROM_START': { + const at = Blockly.PHP.getAdjusted(block, 'AT'); + const code = 'substr(' + text + ', ' + at + ', 1)'; return [code, Blockly.PHP.ORDER_FUNCTION_CALL]; - case 'FROM_END': - var at = Blockly.PHP.getAdjusted(block, 'AT', 1, true); - var code = 'substr(' + text + ', ' + at + ', 1)'; + } + case 'FROM_END': { + const at = Blockly.PHP.getAdjusted(block, 'AT', 1, true); + const code = 'substr(' + text + ', ' + at + ', 1)'; return [code, Blockly.PHP.ORDER_FUNCTION_CALL]; - case 'RANDOM': - var functionName = Blockly.PHP.provideFunction_( + } + case 'RANDOM': { + const functionName = Blockly.PHP.provideFunction_( 'text_random_letter', ['function ' + Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_ + '($text) {', ' return $text[rand(0, strlen($text) - 1)];', '}']); - code = functionName + '(' + text + ')'; + const code = functionName + '(' + text + ')'; return [code, Blockly.PHP.ORDER_FUNCTION_CALL]; + } } throw Error('Unhandled option (text_charAt).'); }; Blockly.PHP['text_getSubstring'] = function(block) { // Get substring. - var where1 = block.getFieldValue('WHERE1'); - var where2 = block.getFieldValue('WHERE2'); - var text = Blockly.PHP.valueToCode(block, 'STRING', + const where1 = block.getFieldValue('WHERE1'); + const where2 = block.getFieldValue('WHERE2'); + const text = Blockly.PHP.valueToCode(block, 'STRING', Blockly.PHP.ORDER_NONE) || '\'\''; if (where1 === 'FIRST' && where2 === 'LAST') { - var code = text; + const code = text; return [code, Blockly.PHP.ORDER_NONE]; } else { - var at1 = Blockly.PHP.getAdjusted(block, 'AT1'); - var at2 = Blockly.PHP.getAdjusted(block, 'AT2'); - var functionName = Blockly.PHP.provideFunction_( + const at1 = Blockly.PHP.getAdjusted(block, 'AT1'); + const at2 = Blockly.PHP.getAdjusted(block, 'AT2'); + const functionName = Blockly.PHP.provideFunction_( 'text_get_substring', ['function ' + Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_ + '($text, $where1, $at1, $where2, $at2) {', @@ -183,7 +187,7 @@ Blockly.PHP['text_getSubstring'] = function(block) { ' }', ' return substr($text, $at1, $length);', '}']); - var code = functionName + '(' + text + ', \'' + + const code = functionName + '(' + text + ', \'' + where1 + '\', ' + at1 + ', \'' + where2 + '\', ' + at2 + ')'; return [code, Blockly.PHP.ORDER_FUNCTION_CALL]; } @@ -191,50 +195,52 @@ Blockly.PHP['text_getSubstring'] = function(block) { Blockly.PHP['text_changeCase'] = function(block) { // Change capitalization. - var text = Blockly.PHP.valueToCode(block, 'TEXT', + const text = Blockly.PHP.valueToCode(block, 'TEXT', Blockly.PHP.ORDER_NONE) || '\'\''; + let code; if (block.getFieldValue('CASE') === 'UPPERCASE') { - var code = 'strtoupper(' + text + ')'; + code = 'strtoupper(' + text + ')'; } else if (block.getFieldValue('CASE') === 'LOWERCASE') { - var code = 'strtolower(' + text + ')'; + code = 'strtolower(' + text + ')'; } else if (block.getFieldValue('CASE') === 'TITLECASE') { - var code = 'ucwords(strtolower(' + text + '))'; + code = 'ucwords(strtolower(' + text + '))'; } return [code, Blockly.PHP.ORDER_FUNCTION_CALL]; }; Blockly.PHP['text_trim'] = function(block) { // Trim spaces. - var OPERATORS = { + const OPERATORS = { 'LEFT': 'ltrim', 'RIGHT': 'rtrim', 'BOTH': 'trim' }; - var operator = OPERATORS[block.getFieldValue('MODE')]; - var text = Blockly.PHP.valueToCode(block, 'TEXT', + const operator = OPERATORS[block.getFieldValue('MODE')]; + const text = Blockly.PHP.valueToCode(block, 'TEXT', Blockly.PHP.ORDER_NONE) || '\'\''; return [operator + '(' + text + ')', Blockly.PHP.ORDER_FUNCTION_CALL]; }; Blockly.PHP['text_print'] = function(block) { // Print statement. - var msg = Blockly.PHP.valueToCode(block, 'TEXT', + const msg = Blockly.PHP.valueToCode(block, 'TEXT', Blockly.PHP.ORDER_NONE) || '\'\''; return 'print(' + msg + ');\n'; }; Blockly.PHP['text_prompt_ext'] = function(block) { // Prompt function. + let msg; if (block.getField('TEXT')) { // Internal message. - var msg = Blockly.PHP.quote_(block.getFieldValue('TEXT')); + msg = Blockly.PHP.quote_(block.getFieldValue('TEXT')); } else { // External message. - var msg = Blockly.PHP.valueToCode(block, 'TEXT', + msg = Blockly.PHP.valueToCode(block, 'TEXT', Blockly.PHP.ORDER_NONE) || '\'\''; } - var code = 'readline(' + msg + ')'; - var toNumber = block.getFieldValue('TYPE') === 'NUMBER'; + let code = 'readline(' + msg + ')'; + const toNumber = block.getFieldValue('TYPE') === 'NUMBER'; if (toNumber) { code = 'floatval(' + code + ')'; } @@ -244,30 +250,30 @@ Blockly.PHP['text_prompt_ext'] = function(block) { Blockly.PHP['text_prompt'] = Blockly.PHP['text_prompt_ext']; Blockly.PHP['text_count'] = function(block) { - var text = Blockly.PHP.valueToCode(block, 'TEXT', + const text = Blockly.PHP.valueToCode(block, 'TEXT', Blockly.PHP.ORDER_NONE) || '\'\''; - var sub = Blockly.PHP.valueToCode(block, 'SUB', + const sub = Blockly.PHP.valueToCode(block, 'SUB', Blockly.PHP.ORDER_NONE) || '\'\''; - var code = 'strlen(' + sub + ') === 0' + const code = 'strlen(' + sub + ') === 0' + ' ? strlen(' + text + ') + 1' + ' : substr_count(' + text + ', ' + sub + ')'; return [code, Blockly.PHP.ORDER_CONDITIONAL]; }; Blockly.PHP['text_replace'] = function(block) { - var text = Blockly.PHP.valueToCode(block, 'TEXT', + const text = Blockly.PHP.valueToCode(block, 'TEXT', Blockly.PHP.ORDER_NONE) || '\'\''; - var from = Blockly.PHP.valueToCode(block, 'FROM', + const from = Blockly.PHP.valueToCode(block, 'FROM', Blockly.PHP.ORDER_NONE) || '\'\''; - var to = Blockly.PHP.valueToCode(block, 'TO', + const to = Blockly.PHP.valueToCode(block, 'TO', Blockly.PHP.ORDER_NONE) || '\'\''; - var code = 'str_replace(' + from + ', ' + to + ', ' + text + ')'; + const code = 'str_replace(' + from + ', ' + to + ', ' + text + ')'; return [code, Blockly.PHP.ORDER_FUNCTION_CALL]; }; Blockly.PHP['text_reverse'] = function(block) { - var text = Blockly.PHP.valueToCode(block, 'TEXT', + const text = Blockly.PHP.valueToCode(block, 'TEXT', Blockly.PHP.ORDER_NONE) || '\'\''; - var code = 'strrev(' + text + ')'; + const code = 'strrev(' + text + ')'; return [code, Blockly.PHP.ORDER_FUNCTION_CALL]; }; diff --git a/generators/php/variables.js b/generators/php/variables.js index 84f260b14..b1c19f689 100644 --- a/generators/php/variables.js +++ b/generators/php/variables.js @@ -16,16 +16,16 @@ goog.require('Blockly.PHP'); Blockly.PHP['variables_get'] = function(block) { // Variable getter. - var code = Blockly.PHP.nameDB_.getName(block.getFieldValue('VAR'), + const code = Blockly.PHP.nameDB_.getName(block.getFieldValue('VAR'), Blockly.VARIABLE_CATEGORY_NAME); return [code, Blockly.PHP.ORDER_ATOMIC]; }; Blockly.PHP['variables_set'] = function(block) { // Variable setter. - var argument0 = Blockly.PHP.valueToCode(block, 'VALUE', + const argument0 = Blockly.PHP.valueToCode(block, 'VALUE', Blockly.PHP.ORDER_ASSIGNMENT) || '0'; - var varName = Blockly.PHP.nameDB_.getName( + const varName = Blockly.PHP.nameDB_.getName( block.getFieldValue('VAR'), Blockly.VARIABLE_CATEGORY_NAME); return varName + ' = ' + argument0 + ';\n'; }; diff --git a/tests/deps.mocha.js b/tests/deps.mocha.js index 88800de2c..26fe5538f 100644 --- a/tests/deps.mocha.js +++ b/tests/deps.mocha.js @@ -292,14 +292,14 @@ goog.addDependency('../../generators/lua/text.js', ['Blockly.Lua.texts'], ['Bloc goog.addDependency('../../generators/lua/variables.js', ['Blockly.Lua.variables'], ['Blockly.Lua']); goog.addDependency('../../generators/lua/variables_dynamic.js', ['Blockly.Lua.variablesDynamic'], ['Blockly.Lua', 'Blockly.Lua.variables']); goog.addDependency('../../generators/php.js', ['Blockly.PHP'], ['Blockly.Generator', 'Blockly.inputTypes', 'Blockly.utils.object', 'Blockly.utils.string'], {'lang': 'es6'}); -goog.addDependency('../../generators/php/colour.js', ['Blockly.PHP.colour'], ['Blockly.PHP']); -goog.addDependency('../../generators/php/lists.js', ['Blockly.PHP.lists'], ['Blockly.PHP']); -goog.addDependency('../../generators/php/logic.js', ['Blockly.PHP.logic'], ['Blockly.PHP']); -goog.addDependency('../../generators/php/loops.js', ['Blockly.PHP.loops'], ['Blockly.PHP']); -goog.addDependency('../../generators/php/math.js', ['Blockly.PHP.math'], ['Blockly.PHP']); -goog.addDependency('../../generators/php/procedures.js', ['Blockly.PHP.procedures'], ['Blockly.PHP']); -goog.addDependency('../../generators/php/text.js', ['Blockly.PHP.texts'], ['Blockly.PHP']); -goog.addDependency('../../generators/php/variables.js', ['Blockly.PHP.variables'], ['Blockly.PHP']); +goog.addDependency('../../generators/php/colour.js', ['Blockly.PHP.colour'], ['Blockly.PHP'], {'lang': 'es6'}); +goog.addDependency('../../generators/php/lists.js', ['Blockly.PHP.lists'], ['Blockly.PHP'], {'lang': 'es6'}); +goog.addDependency('../../generators/php/logic.js', ['Blockly.PHP.logic'], ['Blockly.PHP'], {'lang': 'es6'}); +goog.addDependency('../../generators/php/loops.js', ['Blockly.PHP.loops'], ['Blockly.PHP'], {'lang': 'es6'}); +goog.addDependency('../../generators/php/math.js', ['Blockly.PHP.math'], ['Blockly.PHP'], {'lang': 'es6'}); +goog.addDependency('../../generators/php/procedures.js', ['Blockly.PHP.procedures'], ['Blockly.PHP'], {'lang': 'es6'}); +goog.addDependency('../../generators/php/text.js', ['Blockly.PHP.texts'], ['Blockly.PHP'], {'lang': 'es6'}); +goog.addDependency('../../generators/php/variables.js', ['Blockly.PHP.variables'], ['Blockly.PHP'], {'lang': 'es6'}); goog.addDependency('../../generators/php/variables_dynamic.js', ['Blockly.PHP.variablesDynamic'], ['Blockly.PHP', 'Blockly.PHP.variables']); goog.addDependency('../../generators/python.js', ['Blockly.Python'], ['Blockly.Generator', 'Blockly.inputTypes', 'Blockly.utils.string'], {'lang': 'es6'}); goog.addDependency('../../generators/python/colour.js', ['Blockly.Python.colour'], ['Blockly.Python'], {'lang': 'es6'});