diff --git a/generators/dart/colour.js b/generators/dart/colour.js index 2f1adcbcd..e19202928 100644 --- a/generators/dart/colour.js +++ b/generators/dart/colour.js @@ -18,7 +18,7 @@ Blockly.Dart.addReservedWords('Math'); Blockly.Dart['colour_picker'] = function(block) { // Colour picker. - var code = Blockly.Dart.quote_(block.getFieldValue('COLOUR')); + const code = Blockly.Dart.quote_(block.getFieldValue('COLOUR')); return [code, Blockly.Dart.ORDER_ATOMIC]; }; @@ -26,7 +26,7 @@ Blockly.Dart['colour_random'] = function(block) { // Generate a random colour. Blockly.Dart.definitions_['import_dart_math'] = 'import \'dart:math\' as Math;'; - var functionName = Blockly.Dart.provideFunction_( + const functionName = Blockly.Dart.provideFunction_( 'colour_random', ['String ' + Blockly.Dart.FUNCTION_NAME_PLACEHOLDER_ + '() {', ' String hex = \'0123456789abcdef\';', @@ -35,22 +35,22 @@ Blockly.Dart['colour_random'] = function(block) { ' \'${hex[rnd.nextInt(16)]}${hex[rnd.nextInt(16)]}\'', ' \'${hex[rnd.nextInt(16)]}${hex[rnd.nextInt(16)]}\';', '}']); - var code = functionName + '()'; + const code = functionName + '()'; return [code, Blockly.Dart.ORDER_UNARY_POSTFIX]; }; Blockly.Dart['colour_rgb'] = function(block) { // Compose a colour from RGB components expressed as percentages. - var red = Blockly.Dart.valueToCode(block, 'RED', + const red = Blockly.Dart.valueToCode(block, 'RED', Blockly.Dart.ORDER_NONE) || 0; - var green = Blockly.Dart.valueToCode(block, 'GREEN', + const green = Blockly.Dart.valueToCode(block, 'GREEN', Blockly.Dart.ORDER_NONE) || 0; - var blue = Blockly.Dart.valueToCode(block, 'BLUE', + const blue = Blockly.Dart.valueToCode(block, 'BLUE', Blockly.Dart.ORDER_NONE) || 0; Blockly.Dart.definitions_['import_dart_math'] = 'import \'dart:math\' as Math;'; - var functionName = Blockly.Dart.provideFunction_( + const functionName = Blockly.Dart.provideFunction_( 'colour_rgb', ['String ' + Blockly.Dart.FUNCTION_NAME_PLACEHOLDER_ + '(num r, num g, num b) {', @@ -68,22 +68,22 @@ Blockly.Dart['colour_rgb'] = function(block) { ' bs = bs.substring(bs.length - 2);', ' return \'#$rs$gs$bs\';', '}']); - var code = functionName + '(' + red + ', ' + green + ', ' + blue + ')'; + const code = functionName + '(' + red + ', ' + green + ', ' + blue + ')'; return [code, Blockly.Dart.ORDER_UNARY_POSTFIX]; }; Blockly.Dart['colour_blend'] = function(block) { // Blend two colours together. - var c1 = Blockly.Dart.valueToCode(block, 'COLOUR1', + const c1 = Blockly.Dart.valueToCode(block, 'COLOUR1', Blockly.Dart.ORDER_NONE) || '\'#000000\''; - var c2 = Blockly.Dart.valueToCode(block, 'COLOUR2', + const c2 = Blockly.Dart.valueToCode(block, 'COLOUR2', Blockly.Dart.ORDER_NONE) || '\'#000000\''; - var ratio = Blockly.Dart.valueToCode(block, 'RATIO', + const ratio = Blockly.Dart.valueToCode(block, 'RATIO', Blockly.Dart.ORDER_NONE) || 0.5; Blockly.Dart.definitions_['import_dart_math'] = 'import \'dart:math\' as Math;'; - var functionName = Blockly.Dart.provideFunction_( + const functionName = Blockly.Dart.provideFunction_( 'colour_blend', ['String ' + Blockly.Dart.FUNCTION_NAME_PLACEHOLDER_ + '(String c1, String c2, num ratio) {', @@ -108,6 +108,6 @@ Blockly.Dart['colour_blend'] = function(block) { ' bs = bs.substring(bs.length - 2);', ' return \'#$rs$gs$bs\';', '}']); - var code = functionName + '(' + c1 + ', ' + c2 + ', ' + ratio + ')'; + const code = functionName + '(' + c1 + ', ' + c2 + ', ' + ratio + ')'; return [code, Blockly.Dart.ORDER_UNARY_POSTFIX]; }; diff --git a/generators/dart/lists.js b/generators/dart/lists.js index f0af7a34c..05419a54b 100644 --- a/generators/dart/lists.js +++ b/generators/dart/lists.js @@ -23,48 +23,48 @@ Blockly.Dart['lists_create_empty'] = function(block) { Blockly.Dart['lists_create_with'] = function(block) { // Create a list with any number of elements of any type. - 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.Dart.valueToCode(block, 'ADD' + i, Blockly.Dart.ORDER_NONE) || 'null'; } - var code = '[' + elements.join(', ') + ']'; + const code = '[' + elements.join(', ') + ']'; return [code, Blockly.Dart.ORDER_ATOMIC]; }; Blockly.Dart['lists_repeat'] = function(block) { // Create a list with one element repeated. - var element = Blockly.Dart.valueToCode(block, 'ITEM', + const element = Blockly.Dart.valueToCode(block, 'ITEM', Blockly.Dart.ORDER_NONE) || 'null'; - var repeatCount = Blockly.Dart.valueToCode(block, 'NUM', + const repeatCount = Blockly.Dart.valueToCode(block, 'NUM', Blockly.Dart.ORDER_NONE) || '0'; - var code = 'new List.filled(' + repeatCount + ', ' + element + ')'; + const code = 'new List.filled(' + repeatCount + ', ' + element + ')'; return [code, Blockly.Dart.ORDER_UNARY_POSTFIX]; }; Blockly.Dart['lists_length'] = function(block) { // String or array length. - var list = Blockly.Dart.valueToCode(block, 'VALUE', + const list = Blockly.Dart.valueToCode(block, 'VALUE', Blockly.Dart.ORDER_UNARY_POSTFIX) || '[]'; return [list + '.length', Blockly.Dart.ORDER_UNARY_POSTFIX]; }; Blockly.Dart['lists_isEmpty'] = function(block) { // Is the string null or array empty? - var list = Blockly.Dart.valueToCode(block, 'VALUE', + const list = Blockly.Dart.valueToCode(block, 'VALUE', Blockly.Dart.ORDER_UNARY_POSTFIX) || '[]'; return [list + '.isEmpty', Blockly.Dart.ORDER_UNARY_POSTFIX]; }; Blockly.Dart['lists_indexOf'] = function(block) { // Find an item in the list. - var operator = block.getFieldValue('END') === 'FIRST' ? + const operator = block.getFieldValue('END') === 'FIRST' ? 'indexOf' : 'lastIndexOf'; - var item = Blockly.Dart.valueToCode(block, 'FIND', + const item = Blockly.Dart.valueToCode(block, 'FIND', Blockly.Dart.ORDER_NONE) || '\'\''; - var list = Blockly.Dart.valueToCode(block, 'VALUE', + const list = Blockly.Dart.valueToCode(block, 'VALUE', Blockly.Dart.ORDER_UNARY_POSTFIX) || '[]'; - var code = list + '.' + operator + '(' + item + ')'; + const code = list + '.' + operator + '(' + item + ')'; if (block.workspace.options.oneBasedIndex) { return [code + ' + 1', Blockly.Dart.ORDER_ADDITIVE]; } @@ -74,17 +74,17 @@ Blockly.Dart['lists_indexOf'] = function(block) { Blockly.Dart['lists_getIndex'] = function(block) { // Get element at index. // Note: Until January 2013 this block did not have MODE or WHERE inputs. - var mode = block.getFieldValue('MODE') || 'GET'; - var where = block.getFieldValue('WHERE') || 'FROM_START'; - var listOrder = (where === 'RANDOM' || where === 'FROM_END') ? + const mode = block.getFieldValue('MODE') || 'GET'; + const where = block.getFieldValue('WHERE') || 'FROM_START'; + const listOrder = (where === 'RANDOM' || where === 'FROM_END') ? Blockly.Dart.ORDER_NONE : Blockly.Dart.ORDER_UNARY_POSTFIX; - var list = Blockly.Dart.valueToCode(block, 'VALUE', listOrder) || '[]'; + let list = Blockly.Dart.valueToCode(block, 'VALUE', listOrder) || '[]'; // Cache non-trivial values to variables to prevent repeated look-ups. // Closure, which accesses and modifies 'list'. function cacheList() { - var listVar = Blockly.Dart.nameDB_.getDistinctName( + const listVar = Blockly.Dart.nameDB_.getDistinctName( 'tmp_list', Blockly.VARIABLE_CATEGORY_NAME); - var code = 'List ' + listVar + ' = ' + list + ';\n'; + const code = 'List ' + listVar + ' = ' + list + ';\n'; list = listVar; return code; } @@ -98,8 +98,8 @@ Blockly.Dart['lists_getIndex'] = function(block) { Blockly.Dart.definitions_['import_dart_math'] = 'import \'dart:math\' as Math;'; // We can use multiple statements. - var code = cacheList(); - var xVar = Blockly.Dart.nameDB_.getDistinctName( + let code = cacheList(); + const xVar = Blockly.Dart.nameDB_.getDistinctName( 'tmp_x', Blockly.VARIABLE_CATEGORY_NAME); code += 'int ' + xVar + ' = new Math.Random().nextInt(' + list + '.length);\n'; @@ -108,35 +108,35 @@ Blockly.Dart['lists_getIndex'] = function(block) { } else { // where === 'FROM_END' if (mode === 'REMOVE') { // We can use multiple statements. - var at = Blockly.Dart.getAdjusted(block, 'AT', 1, false, + const at = Blockly.Dart.getAdjusted(block, 'AT', 1, false, Blockly.Dart.ORDER_ADDITIVE); - var code = cacheList(); + let code = cacheList(); code += list + '.removeAt(' + list + '.length' + ' - ' + at + ');\n'; return code; } else if (mode === 'GET') { - var at = Blockly.Dart.getAdjusted(block, 'AT', 1); + const at = Blockly.Dart.getAdjusted(block, 'AT', 1); // We need to create a procedure to avoid reevaluating values. - var functionName = Blockly.Dart.provideFunction_( + const functionName = Blockly.Dart.provideFunction_( 'lists_get_from_end', ['dynamic ' + Blockly.Dart.FUNCTION_NAME_PLACEHOLDER_ + '(List my_list, num x) {', ' x = my_list.length - x;', ' return my_list[x];', '}']); - var code = functionName + '(' + list + ', ' + at + ')'; + const code = functionName + '(' + list + ', ' + at + ')'; return [code, Blockly.Dart.ORDER_UNARY_POSTFIX]; } else if (mode === 'GET_REMOVE') { - var at = Blockly.Dart.getAdjusted(block, 'AT', 1); + const at = Blockly.Dart.getAdjusted(block, 'AT', 1); // We need to create a procedure to avoid reevaluating values. - var functionName = Blockly.Dart.provideFunction_( + const functionName = Blockly.Dart.provideFunction_( 'lists_remove_from_end', ['dynamic ' + Blockly.Dart.FUNCTION_NAME_PLACEHOLDER_ + '(List my_list, num x) {', ' x = my_list.length - x;', ' return my_list.removeAt(x);', '}']); - var code = functionName + '(' + list + ', ' + at + ')'; + const code = functionName + '(' + list + ', ' + at + ')'; return [code, Blockly.Dart.ORDER_UNARY_POSTFIX]; } } @@ -146,10 +146,10 @@ Blockly.Dart['lists_getIndex'] = function(block) { switch (where) { case 'FIRST': if (mode === 'GET') { - var code = list + '.first'; + const code = list + '.first'; return [code, Blockly.Dart.ORDER_UNARY_POSTFIX]; } else if (mode === 'GET_REMOVE') { - var code = list + '.removeAt(0)'; + const code = list + '.removeAt(0)'; return [code, Blockly.Dart.ORDER_UNARY_POSTFIX]; } else if (mode === 'REMOVE') { return list + '.removeAt(0);\n'; @@ -157,35 +157,36 @@ Blockly.Dart['lists_getIndex'] = function(block) { break; case 'LAST': if (mode === 'GET') { - var code = list + '.last'; + const code = list + '.last'; return [code, Blockly.Dart.ORDER_UNARY_POSTFIX]; } else if (mode === 'GET_REMOVE') { - var code = list + '.removeLast()'; + const code = list + '.removeLast()'; return [code, Blockly.Dart.ORDER_UNARY_POSTFIX]; } else if (mode === 'REMOVE') { return list + '.removeLast();\n'; } break; - case 'FROM_START': - var at = Blockly.Dart.getAdjusted(block, 'AT'); + case 'FROM_START': { + const at = Blockly.Dart.getAdjusted(block, 'AT'); if (mode === 'GET') { - var code = list + '[' + at + ']'; + const code = list + '[' + at + ']'; return [code, Blockly.Dart.ORDER_UNARY_POSTFIX]; } else if (mode === 'GET_REMOVE') { - var code = list + '.removeAt(' + at + ')'; + const code = list + '.removeAt(' + at + ')'; return [code, Blockly.Dart.ORDER_UNARY_POSTFIX]; } else if (mode === 'REMOVE') { return list + '.removeAt(' + at + ');\n'; } break; - case 'FROM_END': - var at = Blockly.Dart.getAdjusted(block, 'AT', 1, false, + } + case 'FROM_END': { + const at = Blockly.Dart.getAdjusted(block, 'AT', 1, false, Blockly.Dart.ORDER_ADDITIVE); if (mode === 'GET') { - var code = list + '[' + list + '.length - ' + at + ']'; + const code = list + '[' + list + '.length - ' + at + ']'; return [code, Blockly.Dart.ORDER_UNARY_POSTFIX]; } else if (mode === 'GET_REMOVE' || mode === 'REMOVE') { - var code = list + '.removeAt(' + list + '.length - ' + at + ')'; + const code = list + '.removeAt(' + list + '.length - ' + at + ')'; if (mode === 'GET_REMOVE') { return [code, Blockly.Dart.ORDER_UNARY_POSTFIX]; } else if (mode === 'REMOVE') { @@ -193,36 +194,37 @@ Blockly.Dart['lists_getIndex'] = function(block) { } } break; + } case 'RANDOM': Blockly.Dart.definitions_['import_dart_math'] = 'import \'dart:math\' as Math;'; if (mode === 'REMOVE') { // We can use multiple statements. - var xVar = Blockly.Dart.nameDB_.getDistinctName( + const xVar = Blockly.Dart.nameDB_.getDistinctName( 'tmp_x', Blockly.VARIABLE_CATEGORY_NAME); - var code = 'int ' + xVar + ' = new Math.Random().nextInt(' + list + + let code = 'int ' + xVar + ' = new Math.Random().nextInt(' + list + '.length);\n'; code += list + '.removeAt(' + xVar + ');\n'; return code; } else if (mode === 'GET') { - var functionName = Blockly.Dart.provideFunction_( - 'lists_get_random_item', - ['dynamic ' + Blockly.Dart.FUNCTION_NAME_PLACEHOLDER_ + - '(List my_list) {', + const functionName = + Blockly.Dart.provideFunction_('lists_get_random_item', [ + 'dynamic ' + Blockly.Dart.FUNCTION_NAME_PLACEHOLDER_ + + '(List my_list) {', ' int x = new Math.Random().nextInt(my_list.length);', - ' return my_list[x];', - '}']); - var code = functionName + '(' + list + ')'; + ' return my_list[x];', '}' + ]); + const code = functionName + '(' + list + ')'; return [code, Blockly.Dart.ORDER_UNARY_POSTFIX]; } else if (mode === 'GET_REMOVE') { - var functionName = Blockly.Dart.provideFunction_( - 'lists_remove_random_item', - ['dynamic ' + Blockly.Dart.FUNCTION_NAME_PLACEHOLDER_ + - '(List my_list) {', + const functionName = + Blockly.Dart.provideFunction_('lists_remove_random_item', [ + 'dynamic ' + Blockly.Dart.FUNCTION_NAME_PLACEHOLDER_ + + '(List my_list) {', ' int x = new Math.Random().nextInt(my_list.length);', - ' return my_list.removeAt(x);', - '}']); - var code = functionName + '(' + list + ')'; + ' return my_list.removeAt(x);', '}' + ]); + const code = functionName + '(' + list + ')'; return [code, Blockly.Dart.ORDER_UNARY_POSTFIX]; } break; @@ -234,11 +236,11 @@ Blockly.Dart['lists_getIndex'] = function(block) { Blockly.Dart['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 list = Blockly.Dart.valueToCode(block, 'LIST', + const mode = block.getFieldValue('MODE') || 'GET'; + const where = block.getFieldValue('WHERE') || 'FROM_START'; + let list = Blockly.Dart.valueToCode(block, 'LIST', Blockly.Dart.ORDER_UNARY_POSTFIX) || '[]'; - var value = Blockly.Dart.valueToCode(block, 'TO', + const value = Blockly.Dart.valueToCode(block, 'TO', Blockly.Dart.ORDER_ASSIGNMENT) || 'null'; // Cache non-trivial values to variables to prevent repeated look-ups. // Closure, which accesses and modifies 'list'. @@ -246,9 +248,9 @@ Blockly.Dart['lists_setIndex'] = function(block) { if (list.match(/^\w+$/)) { return ''; } - var listVar = Blockly.Dart.nameDB_.getDistinctName( + const listVar = Blockly.Dart.nameDB_.getDistinctName( 'tmp_list', Blockly.VARIABLE_CATEGORY_NAME); - var code = 'List ' + listVar + ' = ' + list + ';\n'; + const code = 'List ' + listVar + ' = ' + list + ';\n'; list = listVar; return code; } @@ -262,25 +264,26 @@ Blockly.Dart['lists_setIndex'] = function(block) { break; case 'LAST': if (mode === 'SET') { - var code = cacheList(); + let code = cacheList(); code += list + '[' + list + '.length - 1] = ' + value + ';\n'; return code; } else if (mode === 'INSERT') { return list + '.add(' + value + ');\n'; } break; - case 'FROM_START': - var at = Blockly.Dart.getAdjusted(block, 'AT'); + case 'FROM_START': { + const at = Blockly.Dart.getAdjusted(block, 'AT'); if (mode === 'SET') { return list + '[' + at + '] = ' + value + ';\n'; } else if (mode === 'INSERT') { return list + '.insert(' + at + ', ' + value + ');\n'; } break; - case 'FROM_END': - var at = Blockly.Dart.getAdjusted(block, 'AT', 1, false, - Blockly.Dart.ORDER_ADDITIVE); - var code = cacheList(); + } + case 'FROM_END': { + const at = Blockly.Dart.getAdjusted( + block, 'AT', 1, false, Blockly.Dart.ORDER_ADDITIVE); + let code = cacheList(); if (mode === 'SET') { code += list + '[' + list + '.length - ' + at + '] = ' + value + ';\n'; @@ -291,11 +294,12 @@ Blockly.Dart['lists_setIndex'] = function(block) { return code; } break; - case 'RANDOM': + } + case 'RANDOM': { Blockly.Dart.definitions_['import_dart_math'] = 'import \'dart:math\' as Math;'; - var code = cacheList(); - var xVar = Blockly.Dart.nameDB_.getDistinctName( + let code = cacheList(); + const xVar = Blockly.Dart.nameDB_.getDistinctName( 'tmp_x', Blockly.VARIABLE_CATEGORY_NAME); code += 'int ' + xVar + ' = new Math.Random().nextInt(' + list + '.length);\n'; @@ -307,40 +311,44 @@ Blockly.Dart['lists_setIndex'] = function(block) { return code; } break; + } } throw Error('Unhandled combination (lists_setIndex).'); }; Blockly.Dart['lists_getSublist'] = function(block) { // Get sublist. - var list = Blockly.Dart.valueToCode(block, 'LIST', + const list = Blockly.Dart.valueToCode(block, 'LIST', Blockly.Dart.ORDER_UNARY_POSTFIX) || '[]'; - var where1 = block.getFieldValue('WHERE1'); - var where2 = block.getFieldValue('WHERE2'); + const where1 = block.getFieldValue('WHERE1'); + const where2 = block.getFieldValue('WHERE2'); + let code; if (list.match(/^\w+$/) || (where1 !== 'FROM_END' && where2 === 'FROM_START')) { // If the list is a is a variable or doesn't require a call for length, // don't generate a helper function. + let at1; switch (where1) { case 'FROM_START': - var at1 = Blockly.Dart.getAdjusted(block, 'AT1'); + at1 = Blockly.Dart.getAdjusted(block, 'AT1'); break; case 'FROM_END': - var at1 = Blockly.Dart.getAdjusted(block, 'AT1', 1, false, + at1 = Blockly.Dart.getAdjusted(block, 'AT1', 1, false, Blockly.Dart.ORDER_ADDITIVE); at1 = list + '.length - ' + at1; break; case 'FIRST': - var at1 = '0'; + at1 = '0'; break; default: throw Error('Unhandled option (lists_getSublist).'); } + let at2; switch (where2) { case 'FROM_START': - var at2 = Blockly.Dart.getAdjusted(block, 'AT2', 1); + at2 = Blockly.Dart.getAdjusted(block, 'AT2', 1); break; case 'FROM_END': - var at2 = Blockly.Dart.getAdjusted(block, 'AT2', 0, false, + at2 = Blockly.Dart.getAdjusted(block, 'AT2', 0, false, Blockly.Dart.ORDER_ADDITIVE); at2 = list + '.length - ' + at2; break; @@ -351,14 +359,14 @@ Blockly.Dart['lists_getSublist'] = function(block) { throw Error('Unhandled option (lists_getSublist).'); } if (where2 === 'LAST') { - var code = list + '.sublist(' + at1 + ')'; + code = list + '.sublist(' + at1 + ')'; } else { - var code = list + '.sublist(' + at1 + ', ' + at2 + ')'; + code = list + '.sublist(' + at1 + ', ' + at2 + ')'; } } else { - var at1 = Blockly.Dart.getAdjusted(block, 'AT1'); - var at2 = Blockly.Dart.getAdjusted(block, 'AT2'); - var functionName = Blockly.Dart.provideFunction_( + const at1 = Blockly.Dart.getAdjusted(block, 'AT1'); + const at2 = Blockly.Dart.getAdjusted(block, 'AT2'); + const functionName = Blockly.Dart.provideFunction_( 'lists_get_sublist', ['List ' + Blockly.Dart.FUNCTION_NAME_PLACEHOLDER_ + '(List list, String where1, num at1, String where2, num at2) {', @@ -378,19 +386,19 @@ Blockly.Dart['lists_getSublist'] = function(block) { ' at2 = getAt(where2, at2) + 1;', ' return list.sublist(at1, at2);', '}']); - var code = functionName + '(' + list + ', \'' + - where1 + '\', ' + at1 + ', \'' + where2 + '\', ' + at2 + ')'; + code = functionName + '(' + list + ', \'' + where1 + '\', ' + at1 + + ', \'' + where2 + '\', ' + at2 + ')'; } return [code, Blockly.Dart.ORDER_UNARY_POSTFIX]; }; Blockly.Dart['lists_sort'] = function(block) { // Block for sorting a list. - var list = Blockly.Dart.valueToCode(block, 'LIST', + const list = Blockly.Dart.valueToCode(block, 'LIST', Blockly.Dart.ORDER_NONE) || '[]'; - var direction = block.getFieldValue('DIRECTION') === '1' ? 1 : -1; - var type = block.getFieldValue('TYPE'); - var sortFunctionName = Blockly.Dart.provideFunction_( + const direction = block.getFieldValue('DIRECTION') === '1' ? 1 : -1; + const type = block.getFieldValue('TYPE'); + const sortFunctionName = Blockly.Dart.provideFunction_( 'lists_sort', ['List ' + Blockly.Dart.FUNCTION_NAME_PLACEHOLDER_ + '(List list, String type, int direction) {', @@ -414,33 +422,34 @@ Blockly.Dart['lists_sort'] = function(block) { Blockly.Dart['lists_split'] = function(block) { // Block for splitting text into a list, or joining a list into text. - var input = Blockly.Dart.valueToCode(block, 'INPUT', + let input = Blockly.Dart.valueToCode(block, 'INPUT', Blockly.Dart.ORDER_UNARY_POSTFIX); - var delimiter = Blockly.Dart.valueToCode(block, 'DELIM', + const delimiter = Blockly.Dart.valueToCode(block, 'DELIM', Blockly.Dart.ORDER_NONE) || '\'\''; - var mode = block.getFieldValue('MODE'); + const mode = block.getFieldValue('MODE'); + let functionName; if (mode === 'SPLIT') { if (!input) { input = '\'\''; } - var functionName = 'split'; + functionName = 'split'; } else if (mode === 'JOIN') { if (!input) { input = '[]'; } - var functionName = 'join'; + functionName = 'join'; } else { throw Error('Unknown mode: ' + mode); } - var code = input + '.' + functionName + '(' + delimiter + ')'; + const code = input + '.' + functionName + '(' + delimiter + ')'; return [code, Blockly.Dart.ORDER_UNARY_POSTFIX]; }; Blockly.Dart['lists_reverse'] = function(block) { // Block for reversing a list. - var list = Blockly.Dart.valueToCode(block, 'LIST', + const list = Blockly.Dart.valueToCode(block, 'LIST', Blockly.Dart.ORDER_NONE) || '[]'; // XXX What should the operator precedence be for a `new`? - var code = 'new List.from(' + list + '.reversed)'; + const code = 'new List.from(' + list + '.reversed)'; return [code, Blockly.Dart.ORDER_UNARY_POSTFIX]; }; diff --git a/generators/dart/logic.js b/generators/dart/logic.js index 18f1ece2d..519937007 100644 --- a/generators/dart/logic.js +++ b/generators/dart/logic.js @@ -16,8 +16,8 @@ goog.require('Blockly.Dart'); Blockly.Dart['controls_if'] = function(block) { // If/elseif/else condition. - var n = 0; - var code = '', branchCode, conditionCode; + let n = 0; + let code = '', branchCode, conditionCode; if (Blockly.Dart.STATEMENT_PREFIX) { // Automatic prefix insertion is switched off for this block. Add manually. code += Blockly.Dart.injectId(Blockly.Dart.STATEMENT_PREFIX, block); @@ -52,7 +52,7 @@ Blockly.Dart['controls_ifelse'] = Blockly.Dart['controls_if']; Blockly.Dart['logic_compare'] = function(block) { // Comparison operator. - var OPERATORS = { + const OPERATORS = { 'EQ': '==', 'NEQ': '!=', 'LT': '<', @@ -60,29 +60,29 @@ Blockly.Dart['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.Dart.ORDER_EQUALITY : Blockly.Dart.ORDER_RELATIONAL; - var argument0 = Blockly.Dart.valueToCode(block, 'A', order) || '0'; - var argument1 = Blockly.Dart.valueToCode(block, 'B', order) || '0'; - var code = argument0 + ' ' + operator + ' ' + argument1; + const argument0 = Blockly.Dart.valueToCode(block, 'A', order) || '0'; + const argument1 = Blockly.Dart.valueToCode(block, 'B', order) || '0'; + const code = argument0 + ' ' + operator + ' ' + argument1; return [code, order]; }; Blockly.Dart['logic_operation'] = function(block) { // Operations 'and', 'or'. - var operator = (block.getFieldValue('OP') === 'AND') ? '&&' : '||'; - var order = (operator === '&&') ? Blockly.Dart.ORDER_LOGICAL_AND : + const operator = (block.getFieldValue('OP') === 'AND') ? '&&' : '||'; + const order = (operator === '&&') ? Blockly.Dart.ORDER_LOGICAL_AND : Blockly.Dart.ORDER_LOGICAL_OR; - var argument0 = Blockly.Dart.valueToCode(block, 'A', order); - var argument1 = Blockly.Dart.valueToCode(block, 'B', order); + let argument0 = Blockly.Dart.valueToCode(block, 'A', order); + let argument1 = Blockly.Dart.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,21 +90,21 @@ Blockly.Dart['logic_operation'] = function(block) { argument1 = defaultArgument; } } - var code = argument0 + ' ' + operator + ' ' + argument1; + const code = argument0 + ' ' + operator + ' ' + argument1; return [code, order]; }; Blockly.Dart['logic_negate'] = function(block) { // Negation. - var order = Blockly.Dart.ORDER_UNARY_PREFIX; - var argument0 = Blockly.Dart.valueToCode(block, 'BOOL', order) || 'true'; - var code = '!' + argument0; + const order = Blockly.Dart.ORDER_UNARY_PREFIX; + const argument0 = Blockly.Dart.valueToCode(block, 'BOOL', order) || 'true'; + const code = '!' + argument0; return [code, order]; }; Blockly.Dart['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.Dart.ORDER_ATOMIC]; }; @@ -115,12 +115,12 @@ Blockly.Dart['logic_null'] = function(block) { Blockly.Dart['logic_ternary'] = function(block) { // Ternary operator. - var value_if = Blockly.Dart.valueToCode(block, 'IF', + const value_if = Blockly.Dart.valueToCode(block, 'IF', Blockly.Dart.ORDER_CONDITIONAL) || 'false'; - var value_then = Blockly.Dart.valueToCode(block, 'THEN', + const value_then = Blockly.Dart.valueToCode(block, 'THEN', Blockly.Dart.ORDER_CONDITIONAL) || 'null'; - var value_else = Blockly.Dart.valueToCode(block, 'ELSE', + const value_else = Blockly.Dart.valueToCode(block, 'ELSE', Blockly.Dart.ORDER_CONDITIONAL) || 'null'; - var code = value_if + ' ? ' + value_then + ' : ' + value_else; + const code = value_if + ' ? ' + value_then + ' : ' + value_else; return [code, Blockly.Dart.ORDER_CONDITIONAL]; }; diff --git a/generators/dart/loops.js b/generators/dart/loops.js index 8cefbd4f4..6078e3d21 100644 --- a/generators/dart/loops.js +++ b/generators/dart/loops.js @@ -15,21 +15,22 @@ goog.require('Blockly.Dart'); Blockly.Dart['controls_repeat_ext'] = function(block) { + let repeats; // Repeat n times. 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.Dart.valueToCode(block, 'TIMES', + repeats = Blockly.Dart.valueToCode(block, 'TIMES', Blockly.Dart.ORDER_ASSIGNMENT) || '0'; } - var branch = Blockly.Dart.statementToCode(block, 'DO'); + let branch = Blockly.Dart.statementToCode(block, 'DO'); branch = Blockly.Dart.addLoopTrap(branch, block); - var code = ''; - var loopVar = Blockly.Dart.nameDB_.getDistinctName( + let code = ''; + const loopVar = Blockly.Dart.nameDB_.getDistinctName( 'count', Blockly.VARIABLE_CATEGORY_NAME); - var endVar = repeats; + let endVar = repeats; if (!repeats.match(/^\w+$/) && !Blockly.isNumber(repeats)) { endVar = Blockly.Dart.nameDB_.getDistinctName( 'repeat_end', Blockly.VARIABLE_CATEGORY_NAME); @@ -46,11 +47,11 @@ Blockly.Dart['controls_repeat'] = Blockly.Dart['controls_repeat_ext']; Blockly.Dart['controls_whileUntil'] = function(block) { // Do while/until loop. - var until = block.getFieldValue('MODE') === 'UNTIL'; - var argument0 = Blockly.Dart.valueToCode(block, 'BOOL', + const until = block.getFieldValue('MODE') === 'UNTIL'; + let argument0 = Blockly.Dart.valueToCode(block, 'BOOL', until ? Blockly.Dart.ORDER_UNARY_PREFIX : Blockly.Dart.ORDER_NONE) || 'false'; - var branch = Blockly.Dart.statementToCode(block, 'DO'); + let branch = Blockly.Dart.statementToCode(block, 'DO'); branch = Blockly.Dart.addLoopTrap(branch, block); if (until) { argument0 = '!' + argument0; @@ -60,25 +61,25 @@ Blockly.Dart['controls_whileUntil'] = function(block) { Blockly.Dart['controls_for'] = function(block) { // For loop. - var variable0 = Blockly.Dart.nameDB_.getName( + const variable0 = Blockly.Dart.nameDB_.getName( block.getFieldValue('VAR'), Blockly.VARIABLE_CATEGORY_NAME); - var argument0 = Blockly.Dart.valueToCode(block, 'FROM', + const argument0 = Blockly.Dart.valueToCode(block, 'FROM', Blockly.Dart.ORDER_ASSIGNMENT) || '0'; - var argument1 = Blockly.Dart.valueToCode(block, 'TO', + const argument1 = Blockly.Dart.valueToCode(block, 'TO', Blockly.Dart.ORDER_ASSIGNMENT) || '0'; - var increment = Blockly.Dart.valueToCode(block, 'BY', + const increment = Blockly.Dart.valueToCode(block, 'BY', Blockly.Dart.ORDER_ASSIGNMENT) || '1'; - var branch = Blockly.Dart.statementToCode(block, 'DO'); + let branch = Blockly.Dart.statementToCode(block, 'DO'); branch = Blockly.Dart.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.Dart['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.Dart.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.Dart.nameDB_.getDistinctName( variable0 + '_end', Blockly.VARIABLE_CATEGORY_NAME); @@ -102,7 +103,7 @@ Blockly.Dart['controls_for'] = function(block) { } // Determine loop direction at start, in case one of the bounds // changes during loop execution. - var incVar = Blockly.Dart.nameDB_.getDistinctName( + const incVar = Blockly.Dart.nameDB_.getDistinctName( variable0 + '_inc', Blockly.VARIABLE_CATEGORY_NAME); code += 'num ' + incVar + ' = '; if (Blockly.isNumber(increment)) { @@ -125,20 +126,20 @@ Blockly.Dart['controls_for'] = function(block) { Blockly.Dart['controls_forEach'] = function(block) { // For each loop. - var variable0 = Blockly.Dart.nameDB_.getName( + const variable0 = Blockly.Dart.nameDB_.getName( block.getFieldValue('VAR'), Blockly.VARIABLE_CATEGORY_NAME); - var argument0 = Blockly.Dart.valueToCode(block, 'LIST', + const argument0 = Blockly.Dart.valueToCode(block, 'LIST', Blockly.Dart.ORDER_ASSIGNMENT) || '[]'; - var branch = Blockly.Dart.statementToCode(block, 'DO'); + let branch = Blockly.Dart.statementToCode(block, 'DO'); branch = Blockly.Dart.addLoopTrap(branch, block); - var code = 'for (var ' + variable0 + ' in ' + argument0 + ') {\n' + + const code = 'for (var ' + variable0 + ' in ' + argument0 + ') {\n' + branch + '}\n'; return code; }; Blockly.Dart['controls_flow_statements'] = function(block) { // Flow statements: continue, break. - var xfix = ''; + let xfix = ''; if (Blockly.Dart.STATEMENT_PREFIX) { // Automatic prefix insertion is switched off for this block. Add manually. xfix += Blockly.Dart.injectId(Blockly.Dart.STATEMENT_PREFIX, block); @@ -149,7 +150,7 @@ Blockly.Dart['controls_flow_statements'] = function(block) { xfix += Blockly.Dart.injectId(Blockly.Dart.STATEMENT_SUFFIX, block); } if (Blockly.Dart.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/dart/math.js b/generators/dart/math.js index c57181b74..4a70ec437 100644 --- a/generators/dart/math.js +++ b/generators/dart/math.js @@ -18,8 +18,8 @@ Blockly.Dart.addReservedWords('Math'); Blockly.Dart['math_number'] = function(block) { // Numeric value. - var code = Number(block.getFieldValue('NUM')); - var order; + let code = Number(block.getFieldValue('NUM')); + let order; if (code === Infinity) { code = 'double.infinity'; order = Blockly.Dart.ORDER_UNARY_POSTFIX; @@ -37,19 +37,19 @@ Blockly.Dart['math_number'] = function(block) { Blockly.Dart['math_arithmetic'] = function(block) { // Basic arithmetic operators, and power. - var OPERATORS = { + const OPERATORS = { 'ADD': [' + ', Blockly.Dart.ORDER_ADDITIVE], 'MINUS': [' - ', Blockly.Dart.ORDER_ADDITIVE], 'MULTIPLY': [' * ', Blockly.Dart.ORDER_MULTIPLICATIVE], 'DIVIDE': [' / ', Blockly.Dart.ORDER_MULTIPLICATIVE], 'POWER': [null, Blockly.Dart.ORDER_NONE] // Handle power separately. }; - var tuple = OPERATORS[block.getFieldValue('OP')]; - var operator = tuple[0]; - var order = tuple[1]; - var argument0 = Blockly.Dart.valueToCode(block, 'A', order) || '0'; - var argument1 = Blockly.Dart.valueToCode(block, 'B', order) || '0'; - var code; + const tuple = OPERATORS[block.getFieldValue('OP')]; + const operator = tuple[0]; + const order = tuple[1]; + const argument0 = Blockly.Dart.valueToCode(block, 'A', order) || '0'; + const argument1 = Blockly.Dart.valueToCode(block, 'B', order) || '0'; + let code; // Power in Dart requires a special case since it has no operator. if (!operator) { Blockly.Dart.definitions_['import_dart_math'] = @@ -63,9 +63,9 @@ Blockly.Dart['math_arithmetic'] = function(block) { Blockly.Dart['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.Dart.valueToCode(block, 'NUM', @@ -152,7 +152,7 @@ Blockly.Dart['math_single'] = function(block) { Blockly.Dart['math_constant'] = function(block) { // Constants: PI, E, the Golden Ratio, sqrt(2), 1/sqrt(2), INFINITY. - var CONSTANTS = { + const CONSTANTS = { 'PI': ['Math.pi', Blockly.Dart.ORDER_UNARY_POSTFIX], 'E': ['Math.e', Blockly.Dart.ORDER_UNARY_POSTFIX], 'GOLDEN_RATIO': @@ -161,7 +161,7 @@ Blockly.Dart['math_constant'] = function(block) { 'SQRT1_2': ['Math.sqrt1_2', Blockly.Dart.ORDER_UNARY_POSTFIX], 'INFINITY': ['double.infinity', Blockly.Dart.ORDER_ATOMIC] }; - var constant = block.getFieldValue('CONSTANT'); + const constant = block.getFieldValue('CONSTANT'); if (constant !== 'INFINITY') { Blockly.Dart.definitions_['import_dart_math'] = 'import \'dart:math\' as Math;'; @@ -172,18 +172,18 @@ Blockly.Dart['math_constant'] = function(block) { Blockly.Dart['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.Dart.valueToCode(block, 'NUMBER_TO_CHECK', + const number_to_check = Blockly.Dart.valueToCode(block, 'NUMBER_TO_CHECK', Blockly.Dart.ORDER_MULTIPLICATIVE); if (!number_to_check) { return ['false', Blockly.Dart.ORDER_ATOMIC]; } - 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. Blockly.Dart.definitions_['import_dart_math'] = 'import \'dart:math\' as Math;'; - var functionName = Blockly.Dart.provideFunction_( + const functionName = Blockly.Dart.provideFunction_( 'math_isPrime', ['bool ' + Blockly.Dart.FUNCTION_NAME_PLACEHOLDER_ + '(n) {', ' // https://en.wikipedia.org/wiki/Primality_test#Naive_methods', @@ -224,7 +224,7 @@ Blockly.Dart['math_number_property'] = function(block) { code = number_to_check + ' < 0'; break; case 'DIVISIBLE_BY': - var divisor = Blockly.Dart.valueToCode(block, 'DIVISOR', + const divisor = Blockly.Dart.valueToCode(block, 'DIVISOR', Blockly.Dart.ORDER_MULTIPLICATIVE); if (!divisor) { return ['false', Blockly.Dart.ORDER_ATOMIC]; @@ -237,9 +237,9 @@ Blockly.Dart['math_number_property'] = function(block) { Blockly.Dart['math_change'] = function(block) { // Add to a variable in place. - var argument0 = Blockly.Dart.valueToCode(block, 'DELTA', + const argument0 = Blockly.Dart.valueToCode(block, 'DELTA', Blockly.Dart.ORDER_ADDITIVE) || '0'; - var varName = Blockly.Dart.nameDB_.getName(block.getFieldValue('VAR'), + const varName = Blockly.Dart.nameDB_.getName(block.getFieldValue('VAR'), Blockly.VARIABLE_CATEGORY_NAME); return varName + ' = (' + varName + ' is num ? ' + varName + ' : 0) + ' + argument0 + ';\n'; @@ -252,13 +252,13 @@ Blockly.Dart['math_trig'] = Blockly.Dart['math_single']; Blockly.Dart['math_on_list'] = function(block) { // Math functions for lists. - var func = block.getFieldValue('OP'); - var list = Blockly.Dart.valueToCode(block, 'LIST', + const func = block.getFieldValue('OP'); + const list = Blockly.Dart.valueToCode(block, 'LIST', Blockly.Dart.ORDER_NONE) || '[]'; - var code; + let code; switch (func) { - case 'SUM': - var functionName = Blockly.Dart.provideFunction_( + case 'SUM': { + const functionName = Blockly.Dart.provideFunction_( 'math_sum', ['num ' + Blockly.Dart.FUNCTION_NAME_PLACEHOLDER_ + '(List myList) {', @@ -268,10 +268,11 @@ Blockly.Dart['math_on_list'] = function(block) { '}']); code = functionName + '(' + list + ')'; break; - case 'MIN': + } + case 'MIN': { Blockly.Dart.definitions_['import_dart_math'] = 'import \'dart:math\' as Math;'; - var functionName = Blockly.Dart.provideFunction_( + const functionName = Blockly.Dart.provideFunction_( 'math_min', ['num ' + Blockly.Dart.FUNCTION_NAME_PLACEHOLDER_ + '(List myList) {', @@ -283,10 +284,11 @@ Blockly.Dart['math_on_list'] = function(block) { '}']); code = functionName + '(' + list + ')'; break; - case 'MAX': + } + case 'MAX': { Blockly.Dart.definitions_['import_dart_math'] = 'import \'dart:math\' as Math;'; - var functionName = Blockly.Dart.provideFunction_( + const functionName = Blockly.Dart.provideFunction_( 'math_max', ['num ' + Blockly.Dart.FUNCTION_NAME_PLACEHOLDER_ + '(List myList) {', @@ -298,10 +300,11 @@ Blockly.Dart['math_on_list'] = function(block) { '}']); code = functionName + '(' + list + ')'; break; - case 'AVERAGE': + } + case 'AVERAGE': { // This operation exclude null and values that are not int or float: // math_mean([null,null,"aString",1,9]) -> 5.0 - var functionName = Blockly.Dart.provideFunction_( + const functionName = Blockly.Dart.provideFunction_( 'math_mean', ['num ' + Blockly.Dart.FUNCTION_NAME_PLACEHOLDER_ + '(List myList) {', @@ -315,8 +318,9 @@ Blockly.Dart['math_on_list'] = function(block) { '}']); code = functionName + '(' + list + ')'; break; - case 'MEDIAN': - var functionName = Blockly.Dart.provideFunction_( + } + case 'MEDIAN': { + const functionName = Blockly.Dart.provideFunction_( 'math_median', ['num ' + Blockly.Dart.FUNCTION_NAME_PLACEHOLDER_ + '(List myList) {', @@ -337,13 +341,14 @@ Blockly.Dart['math_on_list'] = function(block) { '}']); code = functionName + '(' + list + ')'; break; - case 'MODE': + } + case 'MODE': { Blockly.Dart.definitions_['import_dart_math'] = 'import \'dart:math\' as Math;'; // 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.Dart.provideFunction_( + const functionName = Blockly.Dart.provideFunction_( 'math_modes', ['List ' + Blockly.Dart.FUNCTION_NAME_PLACEHOLDER_ + '(List values) {', @@ -376,10 +381,11 @@ Blockly.Dart['math_on_list'] = function(block) { '}']); code = functionName + '(' + list + ')'; break; - case 'STD_DEV': + } + case 'STD_DEV': { Blockly.Dart.definitions_['import_dart_math'] = 'import \'dart:math\' as Math;'; - var functionName = Blockly.Dart.provideFunction_( + const functionName = Blockly.Dart.provideFunction_( 'math_standard_deviation', ['num ' + Blockly.Dart.FUNCTION_NAME_PLACEHOLDER_ + '(List myList) {', @@ -398,10 +404,11 @@ Blockly.Dart['math_on_list'] = function(block) { '}']); code = functionName + '(' + list + ')'; break; - case 'RANDOM': + } + case 'RANDOM': { Blockly.Dart.definitions_['import_dart_math'] = 'import \'dart:math\' as Math;'; - var functionName = Blockly.Dart.provideFunction_( + const functionName = Blockly.Dart.provideFunction_( 'math_random_item', ['dynamic ' + Blockly.Dart.FUNCTION_NAME_PLACEHOLDER_ + '(List myList) {', @@ -410,6 +417,7 @@ Blockly.Dart['math_on_list'] = function(block) { '}']); code = functionName + '(' + list + ')'; break; + } default: throw Error('Unknown operator: ' + func); } @@ -418,11 +426,11 @@ Blockly.Dart['math_on_list'] = function(block) { Blockly.Dart['math_modulo'] = function(block) { // Remainder computation. - var argument0 = Blockly.Dart.valueToCode(block, 'DIVIDEND', + const argument0 = Blockly.Dart.valueToCode(block, 'DIVIDEND', Blockly.Dart.ORDER_MULTIPLICATIVE) || '0'; - var argument1 = Blockly.Dart.valueToCode(block, 'DIVISOR', + const argument1 = Blockly.Dart.valueToCode(block, 'DIVISOR', Blockly.Dart.ORDER_MULTIPLICATIVE) || '0'; - var code = argument0 + ' % ' + argument1; + const code = argument0 + ' % ' + argument1; return [code, Blockly.Dart.ORDER_MULTIPLICATIVE]; }; @@ -430,13 +438,13 @@ Blockly.Dart['math_constrain'] = function(block) { // Constrain a number between two limits. Blockly.Dart.definitions_['import_dart_math'] = 'import \'dart:math\' as Math;'; - var argument0 = Blockly.Dart.valueToCode(block, 'VALUE', + const argument0 = Blockly.Dart.valueToCode(block, 'VALUE', Blockly.Dart.ORDER_NONE) || '0'; - var argument1 = Blockly.Dart.valueToCode(block, 'LOW', + const argument1 = Blockly.Dart.valueToCode(block, 'LOW', Blockly.Dart.ORDER_NONE) || '0'; - var argument2 = Blockly.Dart.valueToCode(block, 'HIGH', + const argument2 = Blockly.Dart.valueToCode(block, 'HIGH', Blockly.Dart.ORDER_NONE) || 'double.infinity'; - var code = 'Math.min(Math.max(' + argument0 + ', ' + argument1 + '), ' + + const code = 'Math.min(Math.max(' + argument0 + ', ' + argument1 + '), ' + argument2 + ')'; return [code, Blockly.Dart.ORDER_UNARY_POSTFIX]; }; @@ -445,11 +453,11 @@ Blockly.Dart['math_random_int'] = function(block) { // Random integer between [X] and [Y]. Blockly.Dart.definitions_['import_dart_math'] = 'import \'dart:math\' as Math;'; - var argument0 = Blockly.Dart.valueToCode(block, 'FROM', + const argument0 = Blockly.Dart.valueToCode(block, 'FROM', Blockly.Dart.ORDER_NONE) || '0'; - var argument1 = Blockly.Dart.valueToCode(block, 'TO', + const argument1 = Blockly.Dart.valueToCode(block, 'TO', Blockly.Dart.ORDER_NONE) || '0'; - var functionName = Blockly.Dart.provideFunction_( + const functionName = Blockly.Dart.provideFunction_( 'math_random_int', ['int ' + Blockly.Dart.FUNCTION_NAME_PLACEHOLDER_ + '(num a, num b) {', ' if (a > b) {', @@ -460,7 +468,7 @@ Blockly.Dart['math_random_int'] = function(block) { ' }', ' return new Math.Random().nextInt(b - a + 1) + a;', '}']); - var code = functionName + '(' + argument0 + ', ' + argument1 + ')'; + const code = functionName + '(' + argument0 + ', ' + argument1 + ')'; return [code, Blockly.Dart.ORDER_UNARY_POSTFIX]; }; @@ -475,9 +483,9 @@ Blockly.Dart['math_atan2'] = function(block) { // Arctangent of point (X, Y) in degrees from -180 to 180. Blockly.Dart.definitions_['import_dart_math'] = 'import \'dart:math\' as Math;'; - var argument0 = Blockly.Dart.valueToCode(block, 'X', + const argument0 = Blockly.Dart.valueToCode(block, 'X', Blockly.Dart.ORDER_NONE) || '0'; - var argument1 = Blockly.Dart.valueToCode(block, 'Y', + const argument1 = Blockly.Dart.valueToCode(block, 'Y', Blockly.Dart.ORDER_NONE) || '0'; return ['Math.atan2(' + argument1 + ', ' + argument0 + ') / Math.pi * 180', Blockly.Dart.ORDER_MULTIPLICATIVE]; diff --git a/generators/dart/procedures.js b/generators/dart/procedures.js index 3aa6ce215..bb539b8d1 100644 --- a/generators/dart/procedures.js +++ b/generators/dart/procedures.js @@ -16,9 +16,9 @@ goog.require('Blockly.Dart'); Blockly.Dart['procedures_defreturn'] = function(block) { // Define a procedure with a return value. - var funcName = Blockly.Dart.nameDB_.getName(block.getFieldValue('NAME'), + const funcName = Blockly.Dart.nameDB_.getName(block.getFieldValue('NAME'), Blockly.PROCEDURE_CATEGORY_NAME); - var xfix1 = ''; + let xfix1 = ''; if (Blockly.Dart.STATEMENT_PREFIX) { xfix1 += Blockly.Dart.injectId(Blockly.Dart.STATEMENT_PREFIX, block); } @@ -28,16 +28,16 @@ Blockly.Dart['procedures_defreturn'] = function(block) { if (xfix1) { xfix1 = Blockly.Dart.prefixLines(xfix1, Blockly.Dart.INDENT); } - var loopTrap = ''; + let loopTrap = ''; if (Blockly.Dart.INFINITE_LOOP_TRAP) { loopTrap = Blockly.Dart.prefixLines( Blockly.Dart.injectId(Blockly.Dart.INFINITE_LOOP_TRAP, block), Blockly.Dart.INDENT); } - var branch = Blockly.Dart.statementToCode(block, 'STACK'); - var returnValue = Blockly.Dart.valueToCode(block, 'RETURN', + const branch = Blockly.Dart.statementToCode(block, 'STACK'); + let returnValue = Blockly.Dart.valueToCode(block, 'RETURN', Blockly.Dart.ORDER_NONE) || ''; - var xfix2 = ''; + let xfix2 = ''; if (branch && returnValue) { // After executing the function body, revisit this block for the return. xfix2 = xfix1; @@ -45,14 +45,14 @@ Blockly.Dart['procedures_defreturn'] = function(block) { if (returnValue) { returnValue = Blockly.Dart.INDENT + 'return ' + returnValue + ';\n'; } - var returnType = returnValue ? 'dynamic' : 'void'; - var args = []; - var variables = block.getVars(); - for (var i = 0; i < variables.length; i++) { + const returnType = returnValue ? 'dynamic' : 'void'; + const args = []; + const variables = block.getVars(); + for (let i = 0; i < variables.length; i++) { args[i] = Blockly.Dart.nameDB_.getName(variables[i], Blockly.VARIABLE_CATEGORY_NAME); } - var code = returnType + ' ' + funcName + '(' + args.join(', ') + ') {\n' + + let code = returnType + ' ' + funcName + '(' + args.join(', ') + ') {\n' + xfix1 + loopTrap + branch + xfix2 + returnValue + '}'; code = Blockly.Dart.scrub_(block, code); // Add % so as not to collide with helper functions in definitions list. @@ -66,15 +66,15 @@ Blockly.Dart['procedures_defnoreturn'] = Blockly.Dart['procedures_defreturn']; Blockly.Dart['procedures_callreturn'] = function(block) { // Call a procedure with a return value. - var funcName = Blockly.Dart.nameDB_.getName(block.getFieldValue('NAME'), + const funcName = Blockly.Dart.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.Dart.valueToCode(block, 'ARG' + i, Blockly.Dart.ORDER_NONE) || 'null'; } - var code = funcName + '(' + args.join(', ') + ')'; + let code = funcName + '(' + args.join(', ') + ')'; return [code, Blockly.Dart.ORDER_UNARY_POSTFIX]; }; @@ -82,15 +82,15 @@ Blockly.Dart['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.Dart['procedures_callreturn'](block); + const tuple = Blockly.Dart['procedures_callreturn'](block); return tuple[0] + ';\n'; }; Blockly.Dart['procedures_ifreturn'] = function(block) { // Conditionally return value from a procedure. - var condition = Blockly.Dart.valueToCode(block, 'CONDITION', + const condition = Blockly.Dart.valueToCode(block, 'CONDITION', Blockly.Dart.ORDER_NONE) || 'false'; - var code = 'if (' + condition + ') {\n'; + let 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. @@ -99,7 +99,7 @@ Blockly.Dart['procedures_ifreturn'] = function(block) { Blockly.Dart.INDENT); } if (block.hasReturnValue_) { - var value = Blockly.Dart.valueToCode(block, 'VALUE', + const value = Blockly.Dart.valueToCode(block, 'VALUE', Blockly.Dart.ORDER_NONE) || 'null'; code += Blockly.Dart.INDENT + 'return ' + value + ';\n'; } else { diff --git a/generators/dart/text.js b/generators/dart/text.js index cc9963dfc..c589571e2 100644 --- a/generators/dart/text.js +++ b/generators/dart/text.js @@ -18,14 +18,14 @@ Blockly.Dart.addReservedWords('Html,Math'); Blockly.Dart['text'] = function(block) { // Text value. - var code = Blockly.Dart.quote_(block.getFieldValue('TEXT')); + const code = Blockly.Dart.quote_(block.getFieldValue('TEXT')); return [code, Blockly.Dart.ORDER_ATOMIC]; }; Blockly.Dart['text_multiline'] = function(block) { // Text value. - var code = Blockly.Dart.multiline_quote_(block.getFieldValue('TEXT')); - var order = code.indexOf('+') !== -1 ? Blockly.Dart.ORDER_ADDITIVE : + const code = Blockly.Dart.multiline_quote_(block.getFieldValue('TEXT')); + const order = code.indexOf('+') !== -1 ? Blockly.Dart.ORDER_ADDITIVE : Blockly.Dart.ORDER_ATOMIC; return [code, order]; }; @@ -35,54 +35,56 @@ Blockly.Dart['text_join'] = function(block) { switch (block.itemCount_) { case 0: return ['\'\'', Blockly.Dart.ORDER_ATOMIC]; - case 1: - var element = Blockly.Dart.valueToCode(block, 'ADD0', + case 1: { + const element = Blockly.Dart.valueToCode(block, 'ADD0', Blockly.Dart.ORDER_UNARY_POSTFIX) || '\'\''; - var code = element + '.toString()'; + const code = element + '.toString()'; return [code, Blockly.Dart.ORDER_UNARY_POSTFIX]; - default: - var elements = new Array(block.itemCount_); - for (var i = 0; i < block.itemCount_; i++) { + } + default: { + const elements = new Array(block.itemCount_); + for (let i = 0; i < block.itemCount_; i++) { elements[i] = Blockly.Dart.valueToCode(block, 'ADD' + i, Blockly.Dart.ORDER_NONE) || '\'\''; } - var code = '[' + elements.join(',') + '].join()'; + const code = '[' + elements.join(',') + '].join()'; return [code, Blockly.Dart.ORDER_UNARY_POSTFIX]; + } } }; Blockly.Dart['text_append'] = function(block) { // Append to a variable in place. - var varName = Blockly.Dart.nameDB_.getName(block.getFieldValue('VAR'), + const varName = Blockly.Dart.nameDB_.getName(block.getFieldValue('VAR'), Blockly.VARIABLE_CATEGORY_NAME); - var value = Blockly.Dart.valueToCode(block, 'TEXT', + const value = Blockly.Dart.valueToCode(block, 'TEXT', Blockly.Dart.ORDER_NONE) || '\'\''; return varName + ' = [' + varName + ', ' + value + '].join();\n'; }; Blockly.Dart['text_length'] = function(block) { // String or array length. - var text = Blockly.Dart.valueToCode(block, 'VALUE', + const text = Blockly.Dart.valueToCode(block, 'VALUE', Blockly.Dart.ORDER_UNARY_POSTFIX) || '\'\''; return [text + '.length', Blockly.Dart.ORDER_UNARY_POSTFIX]; }; Blockly.Dart['text_isEmpty'] = function(block) { // Is the string null or array empty? - var text = Blockly.Dart.valueToCode(block, 'VALUE', + const text = Blockly.Dart.valueToCode(block, 'VALUE', Blockly.Dart.ORDER_UNARY_POSTFIX) || '\'\''; return [text + '.isEmpty', Blockly.Dart.ORDER_UNARY_POSTFIX]; }; Blockly.Dart['text_indexOf'] = function(block) { // Search the text for a substring. - var operator = block.getFieldValue('END') === 'FIRST' ? + const operator = block.getFieldValue('END') === 'FIRST' ? 'indexOf' : 'lastIndexOf'; - var substring = Blockly.Dart.valueToCode(block, 'FIND', + const substring = Blockly.Dart.valueToCode(block, 'FIND', Blockly.Dart.ORDER_NONE) || '\'\''; - var text = Blockly.Dart.valueToCode(block, 'VALUE', + const text = Blockly.Dart.valueToCode(block, 'VALUE', Blockly.Dart.ORDER_UNARY_POSTFIX) || '\'\''; - var code = text + '.' + operator + '(' + substring + ')'; + const code = text + '.' + operator + '(' + substring + ')'; if (block.workspace.options.oneBasedIndex) { return [code + ' + 1', Blockly.Dart.ORDER_ADDITIVE]; } @@ -92,82 +94,90 @@ Blockly.Dart['text_indexOf'] = function(block) { Blockly.Dart['text_charAt'] = function(block) { // Get letter at index. // Note: Until January 2013 this block did not have the WHERE input. - var where = block.getFieldValue('WHERE') || 'FROM_START'; - var textOrder = (where === 'FIRST' || where === 'FROM_START') ? + const where = block.getFieldValue('WHERE') || 'FROM_START'; + const textOrder = (where === 'FIRST' || where === 'FROM_START') ? Blockly.Dart.ORDER_UNARY_POSTFIX : Blockly.Dart.ORDER_NONE; - var text = Blockly.Dart.valueToCode(block, 'VALUE', textOrder) || '\'\''; + const text = Blockly.Dart.valueToCode(block, 'VALUE', textOrder) || '\'\''; + let at; switch (where) { - case 'FIRST': - var code = text + '[0]'; + case 'FIRST': { + const code = text + '[0]'; return [code, Blockly.Dart.ORDER_UNARY_POSTFIX]; - case 'FROM_START': - var at = Blockly.Dart.getAdjusted(block, 'AT'); - var code = text + '[' + at + ']'; + } + case 'FROM_START': { + at = Blockly.Dart.getAdjusted(block, 'AT'); + const code = text + '[' + at + ']'; return [code, Blockly.Dart.ORDER_UNARY_POSTFIX]; + } case 'LAST': at = 1; // Fall through. - case 'FROM_END': - var at = Blockly.Dart.getAdjusted(block, 'AT', 1); - var functionName = Blockly.Dart.provideFunction_( + case 'FROM_END': { + at = Blockly.Dart.getAdjusted(block, 'AT', 1); + const functionName = Blockly.Dart.provideFunction_( 'text_get_from_end', ['String ' + Blockly.Dart.FUNCTION_NAME_PLACEHOLDER_ + '(String text, num x) {', ' return text[text.length - x];', '}']); - code = functionName + '(' + text + ', ' + at + ')'; + const code = functionName + '(' + text + ', ' + at + ')'; return [code, Blockly.Dart.ORDER_UNARY_POSTFIX]; - case 'RANDOM': + } + case 'RANDOM': { Blockly.Dart.definitions_['import_dart_math'] = 'import \'dart:math\' as Math;'; - var functionName = Blockly.Dart.provideFunction_( + const functionName = Blockly.Dart.provideFunction_( 'text_random_letter', ['String ' + Blockly.Dart.FUNCTION_NAME_PLACEHOLDER_ + '(String text) {', ' int x = new Math.Random().nextInt(text.length);', ' return text[x];', '}']); - code = functionName + '(' + text + ')'; + const code = functionName + '(' + text + ')'; return [code, Blockly.Dart.ORDER_UNARY_POSTFIX]; + } } throw Error('Unhandled option (text_charAt).'); }; Blockly.Dart['text_getSubstring'] = function(block) { // Get substring. - var where1 = block.getFieldValue('WHERE1'); - var where2 = block.getFieldValue('WHERE2'); - var requiresLengthCall = (where1 !== 'FROM_END' && where2 === 'FROM_START'); - var textOrder = requiresLengthCall ? Blockly.Dart.ORDER_UNARY_POSTFIX : + const where1 = block.getFieldValue('WHERE1'); + const where2 = block.getFieldValue('WHERE2'); + const requiresLengthCall = (where1 !== 'FROM_END' && where2 === 'FROM_START'); + const textOrder = requiresLengthCall ? Blockly.Dart.ORDER_UNARY_POSTFIX : Blockly.Dart.ORDER_NONE; - var text = Blockly.Dart.valueToCode(block, 'STRING', textOrder) || '\'\''; + const text = Blockly.Dart.valueToCode(block, 'STRING', textOrder) || '\'\''; + let code; if (where1 === 'FIRST' && where2 === 'LAST') { - var code = text; + code = text; return [code, Blockly.Dart.ORDER_NONE]; } else if (text.match(/^'?\w+'?$/) || requiresLengthCall) { // If the text is a variable or literal or doesn't require a call for // length, don't generate a helper function. + let at1; switch (where1) { case 'FROM_START': - var at1 = Blockly.Dart.getAdjusted(block, 'AT1'); + at1 = Blockly.Dart.getAdjusted(block, 'AT1'); break; case 'FROM_END': - var at1 = Blockly.Dart.getAdjusted(block, 'AT1', 1, false, + at1 = Blockly.Dart.getAdjusted(block, 'AT1', 1, false, Blockly.Dart.ORDER_ADDITIVE); at1 = text + '.length - ' + at1; break; case 'FIRST': - var at1 = '0'; + at1 = '0'; break; default: throw Error('Unhandled option (text_getSubstring).'); } + let at2; switch (where2) { case 'FROM_START': - var at2 = Blockly.Dart.getAdjusted(block, 'AT2', 1); + at2 = Blockly.Dart.getAdjusted(block, 'AT2', 1); break; case 'FROM_END': - var at2 = Blockly.Dart.getAdjusted(block, 'AT2', 0, false, + at2 = Blockly.Dart.getAdjusted(block, 'AT2', 0, false, Blockly.Dart.ORDER_ADDITIVE); at2 = text + '.length - ' + at2; break; @@ -176,15 +186,16 @@ Blockly.Dart['text_getSubstring'] = function(block) { default: throw Error('Unhandled option (text_getSubstring).'); } + if (where2 === 'LAST') { - var code = text + '.substring(' + at1 + ')'; + code = text + '.substring(' + at1 + ')'; } else { - var code = text + '.substring(' + at1 + ', ' + at2 + ')'; + code = text + '.substring(' + at1 + ', ' + at2 + ')'; } } else { - var at1 = Blockly.Dart.getAdjusted(block, 'AT1'); - var at2 = Blockly.Dart.getAdjusted(block, 'AT2'); - var functionName = Blockly.Dart.provideFunction_( + const at1 = Blockly.Dart.getAdjusted(block, 'AT1'); + const at2 = Blockly.Dart.getAdjusted(block, 'AT2'); + const functionName = Blockly.Dart.provideFunction_( 'text_get_substring', ['String ' + Blockly.Dart.FUNCTION_NAME_PLACEHOLDER_ + '(String text, String where1, num at1, String where2, num at2) {', @@ -204,7 +215,7 @@ Blockly.Dart['text_getSubstring'] = function(block) { ' at2 = getAt(where2, at2) + 1;', ' return text.substring(at1, at2);', '}']); - var code = functionName + '(' + text + ', \'' + + code = functionName + '(' + text + ', \'' + where1 + '\', ' + at1 + ', \'' + where2 + '\', ' + at2 + ')'; } return [code, Blockly.Dart.ORDER_UNARY_POSTFIX]; @@ -212,21 +223,22 @@ Blockly.Dart['text_getSubstring'] = function(block) { Blockly.Dart['text_changeCase'] = function(block) { // Change capitalization. - var OPERATORS = { + const OPERATORS = { 'UPPERCASE': '.toUpperCase()', 'LOWERCASE': '.toLowerCase()', 'TITLECASE': null }; - var operator = OPERATORS[block.getFieldValue('CASE')]; - var textOrder = operator ? Blockly.Dart.ORDER_UNARY_POSTFIX : + const operator = OPERATORS[block.getFieldValue('CASE')]; + const textOrder = operator ? Blockly.Dart.ORDER_UNARY_POSTFIX : Blockly.Dart.ORDER_NONE; - var text = Blockly.Dart.valueToCode(block, 'TEXT', textOrder) || '\'\''; + const text = Blockly.Dart.valueToCode(block, 'TEXT', textOrder) || '\'\''; + let code; if (operator) { // Upper and lower case are functions built into Dart. - var code = text + operator; + code = text + operator; } else { // Title case is not a native Dart function. Define one. - var functionName = Blockly.Dart.provideFunction_( + const functionName = Blockly.Dart.provideFunction_( 'text_toTitleCase', ['String ' + Blockly.Dart.FUNCTION_NAME_PLACEHOLDER_ + '(String str) {', @@ -243,27 +255,27 @@ Blockly.Dart['text_changeCase'] = function(block) { ' }', ' return title.toString();', '}']); - var code = functionName + '(' + text + ')'; + code = functionName + '(' + text + ')'; } return [code, Blockly.Dart.ORDER_UNARY_POSTFIX]; }; Blockly.Dart['text_trim'] = function(block) { // Trim spaces. - var OPERATORS = { + const OPERATORS = { 'LEFT': '.replaceFirst(new RegExp(r\'^\\s+\'), \'\')', 'RIGHT': '.replaceFirst(new RegExp(r\'\\s+$\'), \'\')', 'BOTH': '.trim()' }; - var operator = OPERATORS[block.getFieldValue('MODE')]; - var text = Blockly.Dart.valueToCode(block, 'TEXT', + const operator = OPERATORS[block.getFieldValue('MODE')]; + const text = Blockly.Dart.valueToCode(block, 'TEXT', Blockly.Dart.ORDER_UNARY_POSTFIX) || '\'\''; return [text + operator, Blockly.Dart.ORDER_UNARY_POSTFIX]; }; Blockly.Dart['text_print'] = function(block) { // Print statement. - var msg = Blockly.Dart.valueToCode(block, 'TEXT', + const msg = Blockly.Dart.valueToCode(block, 'TEXT', Blockly.Dart.ORDER_NONE) || '\'\''; return 'print(' + msg + ');\n'; }; @@ -272,16 +284,17 @@ Blockly.Dart['text_prompt_ext'] = function(block) { // Prompt function. Blockly.Dart.definitions_['import_dart_html'] = 'import \'dart:html\' as Html;'; + let msg; if (block.getField('TEXT')) { // Internal message. - var msg = Blockly.Dart.quote_(block.getFieldValue('TEXT')); + msg = Blockly.Dart.quote_(block.getFieldValue('TEXT')); } else { // External message. - var msg = Blockly.Dart.valueToCode(block, 'TEXT', + msg = Blockly.Dart.valueToCode(block, 'TEXT', Blockly.Dart.ORDER_NONE) || '\'\''; } - var code = 'Html.window.prompt(' + msg + ', \'\')'; - var toNumber = block.getFieldValue('TYPE') === 'NUMBER'; + let code = 'Html.window.prompt(' + msg + ', \'\')'; + const toNumber = block.getFieldValue('TYPE') === 'NUMBER'; if (toNumber) { Blockly.Dart.definitions_['import_dart_math'] = 'import \'dart:math\' as Math;'; @@ -293,12 +306,12 @@ Blockly.Dart['text_prompt_ext'] = function(block) { Blockly.Dart['text_prompt'] = Blockly.Dart['text_prompt_ext']; Blockly.Dart['text_count'] = function(block) { - var text = Blockly.Dart.valueToCode(block, 'TEXT', + const text = Blockly.Dart.valueToCode(block, 'TEXT', Blockly.Dart.ORDER_NONE) || '\'\''; - var sub = Blockly.Dart.valueToCode(block, 'SUB', + const sub = Blockly.Dart.valueToCode(block, 'SUB', Blockly.Dart.ORDER_NONE) || '\'\''; // Substring count is not a native Dart function. Define one. - var functionName = Blockly.Dart.provideFunction_( + const functionName = Blockly.Dart.provideFunction_( 'text_count', ['int ' + Blockly.Dart.FUNCTION_NAME_PLACEHOLDER_ + '(String haystack, String needle) {', @@ -316,18 +329,18 @@ Blockly.Dart['text_count'] = function(block) { ' }', ' return count;', '}']); - var code = functionName + '(' + text + ', ' + sub + ')'; + const code = functionName + '(' + text + ', ' + sub + ')'; return [code, Blockly.Dart.ORDER_UNARY_POSTFIX]; }; Blockly.Dart['text_replace'] = function(block) { - var text = Blockly.Dart.valueToCode(block, 'TEXT', + const text = Blockly.Dart.valueToCode(block, 'TEXT', Blockly.Dart.ORDER_UNARY_POSTFIX) || '\'\''; - var from = Blockly.Dart.valueToCode(block, 'FROM', + const from = Blockly.Dart.valueToCode(block, 'FROM', Blockly.Dart.ORDER_NONE) || '\'\''; - var to = Blockly.Dart.valueToCode(block, 'TO', + const to = Blockly.Dart.valueToCode(block, 'TO', Blockly.Dart.ORDER_NONE) || '\'\''; - var code = text + '.replaceAll(' + from + ', ' + to + ')'; + const code = text + '.replaceAll(' + from + ', ' + to + ')'; return [code, Blockly.Dart.ORDER_UNARY_POSTFIX]; }; @@ -335,8 +348,8 @@ Blockly.Dart['text_reverse'] = function(block) { // There isn't a sensible way to do this in Dart. See: // http://stackoverflow.com/a/21613700/3529104 // Implementing something is possibly better than not implementing anything? - var text = Blockly.Dart.valueToCode(block, 'TEXT', + const text = Blockly.Dart.valueToCode(block, 'TEXT', Blockly.Dart.ORDER_UNARY_POSTFIX) || '\'\''; - var code = 'new String.fromCharCodes(' + text + '.runes.toList().reversed)'; + const code = 'new String.fromCharCodes(' + text + '.runes.toList().reversed)'; return [code, Blockly.Dart.ORDER_UNARY_PREFIX]; }; diff --git a/generators/dart/variables.js b/generators/dart/variables.js index 9eb56e1de..31506d3b3 100644 --- a/generators/dart/variables.js +++ b/generators/dart/variables.js @@ -16,16 +16,16 @@ goog.require('Blockly.Dart'); Blockly.Dart['variables_get'] = function(block) { // Variable getter. - var code = Blockly.Dart.nameDB_.getName(block.getFieldValue('VAR'), + const code = Blockly.Dart.nameDB_.getName(block.getFieldValue('VAR'), Blockly.VARIABLE_CATEGORY_NAME); return [code, Blockly.Dart.ORDER_ATOMIC]; }; Blockly.Dart['variables_set'] = function(block) { // Variable setter. - var argument0 = Blockly.Dart.valueToCode(block, 'VALUE', + const argument0 = Blockly.Dart.valueToCode(block, 'VALUE', Blockly.Dart.ORDER_ASSIGNMENT) || '0'; - var varName = Blockly.Dart.nameDB_.getName(block.getFieldValue('VAR'), + const varName = Blockly.Dart.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 c223377a6..2524297e7 100644 --- a/tests/deps.mocha.js +++ b/tests/deps.mocha.js @@ -262,14 +262,14 @@ goog.addDependency('../../core/workspace_svg.js', ['Blockly.WorkspaceSvg'], ['Bl goog.addDependency('../../core/xml.js', ['Blockly.Xml'], ['Blockly.Events.utils', 'Blockly.inputTypes', 'Blockly.utils.Size', 'Blockly.utils.dom', 'Blockly.utils.xml'], {'lang': 'es6', 'module': 'goog'}); goog.addDependency('../../core/zoom_controls.js', ['Blockly.ZoomControls'], ['Blockly.ComponentManager', 'Blockly.Css', 'Blockly.Events.Click', 'Blockly.Events.utils', 'Blockly.IPositionable', 'Blockly.Touch', 'Blockly.browserEvents', 'Blockly.internalConstants', 'Blockly.uiPosition', 'Blockly.utils.Rect', 'Blockly.utils.Size', 'Blockly.utils.Svg', 'Blockly.utils.dom'], {'lang': 'es6', 'module': 'goog'}); goog.addDependency('../../generators/dart.js', ['Blockly.Dart'], ['Blockly.Generator', 'Blockly.inputTypes', 'Blockly.utils.string'], {'lang': 'es6'}); -goog.addDependency('../../generators/dart/colour.js', ['Blockly.Dart.colour'], ['Blockly.Dart']); -goog.addDependency('../../generators/dart/lists.js', ['Blockly.Dart.lists'], ['Blockly.Dart']); -goog.addDependency('../../generators/dart/logic.js', ['Blockly.Dart.logic'], ['Blockly.Dart']); -goog.addDependency('../../generators/dart/loops.js', ['Blockly.Dart.loops'], ['Blockly.Dart']); -goog.addDependency('../../generators/dart/math.js', ['Blockly.Dart.math'], ['Blockly.Dart']); -goog.addDependency('../../generators/dart/procedures.js', ['Blockly.Dart.procedures'], ['Blockly.Dart']); -goog.addDependency('../../generators/dart/text.js', ['Blockly.Dart.texts'], ['Blockly.Dart']); -goog.addDependency('../../generators/dart/variables.js', ['Blockly.Dart.variables'], ['Blockly.Dart']); +goog.addDependency('../../generators/dart/colour.js', ['Blockly.Dart.colour'], ['Blockly.Dart'], {'lang': 'es6'}); +goog.addDependency('../../generators/dart/lists.js', ['Blockly.Dart.lists'], ['Blockly.Dart'], {'lang': 'es6'}); +goog.addDependency('../../generators/dart/logic.js', ['Blockly.Dart.logic'], ['Blockly.Dart'], {'lang': 'es6'}); +goog.addDependency('../../generators/dart/loops.js', ['Blockly.Dart.loops'], ['Blockly.Dart'], {'lang': 'es6'}); +goog.addDependency('../../generators/dart/math.js', ['Blockly.Dart.math'], ['Blockly.Dart'], {'lang': 'es6'}); +goog.addDependency('../../generators/dart/procedures.js', ['Blockly.Dart.procedures'], ['Blockly.Dart'], {'lang': 'es6'}); +goog.addDependency('../../generators/dart/text.js', ['Blockly.Dart.texts'], ['Blockly.Dart'], {'lang': 'es6'}); +goog.addDependency('../../generators/dart/variables.js', ['Blockly.Dart.variables'], ['Blockly.Dart'], {'lang': 'es6'}); goog.addDependency('../../generators/dart/variables_dynamic.js', ['Blockly.Dart.variablesDynamic'], ['Blockly.Dart', 'Blockly.Dart.variables']); goog.addDependency('../../generators/javascript.js', ['Blockly.JavaScript'], ['Blockly.Generator', 'Blockly.inputTypes', 'Blockly.utils.global', 'Blockly.utils.object', 'Blockly.utils.string']); goog.addDependency('../../generators/javascript/colour.js', ['Blockly.JavaScript.colour'], ['Blockly.JavaScript']);