mirror of
https://github.com/google/blockly.git
synced 2026-01-08 17:40:09 +01:00
Update to latest version.
This commit is contained in:
@@ -248,7 +248,8 @@ Blockly.Dart['lists_setIndex'] = function(block) {
|
||||
var code = cacheList();
|
||||
var xVar = Blockly.Dart.variableDB_.getDistinctName(
|
||||
'tmp_x', Blockly.Variables.NAME_TYPE);
|
||||
code += 'int ' + xVar + ' = new Math.Random().nextInt(' + list + '.length);';
|
||||
code += 'int ' + xVar +
|
||||
' = new Math.Random().nextInt(' + list + '.length);';
|
||||
if (mode == 'SET') {
|
||||
code += list + '[' + xVar + '] = ' + value + ';\n';
|
||||
return code;
|
||||
|
||||
@@ -52,12 +52,12 @@ Blockly.Dart['controls_if'] = function(block) {
|
||||
Blockly.Dart['logic_compare'] = function(block) {
|
||||
// Comparison operator.
|
||||
var OPERATORS = {
|
||||
EQ: '==',
|
||||
NEQ: '!=',
|
||||
LT: '<',
|
||||
LTE: '<=',
|
||||
GT: '>',
|
||||
GTE: '>='
|
||||
'EQ': '==',
|
||||
'NEQ': '!=',
|
||||
'LT': '<',
|
||||
'LTE': '<=',
|
||||
'GT': '>',
|
||||
'GTE': '>='
|
||||
};
|
||||
var operator = OPERATORS[block.getFieldValue('OP')];
|
||||
var order = (operator == '==' || operator == '!=') ?
|
||||
@@ -120,6 +120,6 @@ Blockly.Dart['logic_ternary'] = function(block) {
|
||||
Blockly.Dart.ORDER_CONDITIONAL) || 'null';
|
||||
var value_else = Blockly.Dart.valueToCode(block, 'ELSE',
|
||||
Blockly.Dart.ORDER_CONDITIONAL) || 'null';
|
||||
var code = value_if + ' ? ' + value_then + ' : ' + value_else
|
||||
var code = value_if + ' ? ' + value_then + ' : ' + value_else;
|
||||
return [code, Blockly.Dart.ORDER_CONDITIONAL];
|
||||
};
|
||||
|
||||
@@ -33,10 +33,7 @@ Blockly.Dart['controls_repeat'] = function(block) {
|
||||
// Repeat n times (internal number).
|
||||
var repeats = Number(block.getFieldValue('TIMES'));
|
||||
var branch = Blockly.Dart.statementToCode(block, 'DO');
|
||||
if (Blockly.Dart.INFINITE_LOOP_TRAP) {
|
||||
branch = Blockly.Dart.INFINITE_LOOP_TRAP.replace(/%1/g,
|
||||
'\'' + block.id + '\'') + branch;
|
||||
}
|
||||
branch = Blockly.Dart.addLoopTrap(branch, block.id);
|
||||
var loopVar = Blockly.Dart.variableDB_.getDistinctName(
|
||||
'count', Blockly.Variables.NAME_TYPE);
|
||||
var code = 'for (int ' + loopVar + ' = 0; ' +
|
||||
@@ -51,10 +48,7 @@ Blockly.Dart['controls_repeat_ext'] = function(block) {
|
||||
var repeats = Blockly.Dart.valueToCode(block, 'TIMES',
|
||||
Blockly.Dart.ORDER_ASSIGNMENT) || '0';
|
||||
var branch = Blockly.Dart.statementToCode(block, 'DO');
|
||||
if (Blockly.Dart.INFINITE_LOOP_TRAP) {
|
||||
branch = Blockly.Dart.INFINITE_LOOP_TRAP.replace(/%1/g,
|
||||
'\'' + block.id + '\'') + branch;
|
||||
}
|
||||
branch = Blockly.Dart.addLoopTrap(branch, block.id);
|
||||
var code = '';
|
||||
var loopVar = Blockly.Dart.variableDB_.getDistinctName(
|
||||
'count', Blockly.Variables.NAME_TYPE);
|
||||
@@ -78,10 +72,7 @@ Blockly.Dart['controls_whileUntil'] = function(block) {
|
||||
until ? Blockly.Dart.ORDER_UNARY_PREFIX :
|
||||
Blockly.Dart.ORDER_NONE) || 'false';
|
||||
var branch = Blockly.Dart.statementToCode(block, 'DO');
|
||||
if (Blockly.Dart.INFINITE_LOOP_TRAP) {
|
||||
branch = Blockly.Dart.INFINITE_LOOP_TRAP.replace(/%1/g,
|
||||
'\'' + block.id + '\'') + branch;
|
||||
}
|
||||
branch = Blockly.Dart.addLoopTrap(branch, block.id);
|
||||
if (until) {
|
||||
argument0 = '!' + argument0;
|
||||
}
|
||||
@@ -99,10 +90,7 @@ Blockly.Dart['controls_for'] = function(block) {
|
||||
var increment = Blockly.Dart.valueToCode(block, 'BY',
|
||||
Blockly.Dart.ORDER_ASSIGNMENT) || '1';
|
||||
var branch = Blockly.Dart.statementToCode(block, 'DO');
|
||||
if (Blockly.Dart.INFINITE_LOOP_TRAP) {
|
||||
branch = Blockly.Dart.INFINITE_LOOP_TRAP.replace(/%1/g,
|
||||
'\'' + block.id + '\'') + branch;
|
||||
}
|
||||
branch = Blockly.Dart.addLoopTrap(branch, block.id);
|
||||
var code;
|
||||
if (Blockly.isNumber(argument0) && Blockly.isNumber(argument1) &&
|
||||
Blockly.isNumber(increment)) {
|
||||
@@ -144,10 +132,10 @@ Blockly.Dart['controls_for'] = function(block) {
|
||||
code += '(' + increment + ').abs();\n';
|
||||
}
|
||||
code += 'if (' + startVar + ' > ' + endVar + ') {\n';
|
||||
code += ' ' + incVar + ' = -' + incVar +';\n';
|
||||
code += Blockly.Dart.INDENT + incVar + ' = -' + incVar + ';\n';
|
||||
code += '}\n';
|
||||
code += 'for (' + variable0 + ' = ' + startVar + ';\n' +
|
||||
' ' + incVar + ' >= 0 ? ' +
|
||||
' ' + incVar + ' >= 0 ? ' +
|
||||
variable0 + ' <= ' + endVar + ' : ' +
|
||||
variable0 + ' >= ' + endVar + ';\n' +
|
||||
' ' + variable0 + ' += ' + incVar + ') {\n' +
|
||||
@@ -163,10 +151,7 @@ Blockly.Dart['controls_forEach'] = function(block) {
|
||||
var argument0 = Blockly.Dart.valueToCode(block, 'LIST',
|
||||
Blockly.Dart.ORDER_ASSIGNMENT) || '[]';
|
||||
var branch = Blockly.Dart.statementToCode(block, 'DO');
|
||||
if (Blockly.Dart.INFINITE_LOOP_TRAP) {
|
||||
branch = Blockly.Dart.INFINITE_LOOP_TRAP.replace(/%1/g,
|
||||
'\'' + block.id + '\'') + branch;
|
||||
}
|
||||
branch = Blockly.Dart.addLoopTrap(branch, block.id);
|
||||
var code = 'for (var ' + variable0 + ' in ' + argument0 + ') {\n' +
|
||||
branch + '}\n';
|
||||
return code;
|
||||
|
||||
@@ -44,11 +44,11 @@ Blockly.Dart['math_number'] = function(block) {
|
||||
Blockly.Dart['math_arithmetic'] = function(block) {
|
||||
// Basic arithmetic operators, and power.
|
||||
var 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.
|
||||
'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];
|
||||
@@ -159,12 +159,13 @@ 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 = {
|
||||
PI: ['Math.PI', Blockly.Dart.ORDER_UNARY_POSTFIX],
|
||||
E: ['Math.E', Blockly.Dart.ORDER_UNARY_POSTFIX],
|
||||
GOLDEN_RATIO: ['(1 + Math.sqrt(5)) / 2', Blockly.Dart.ORDER_MULTIPLICATIVE],
|
||||
SQRT2: ['Math.SQRT2', Blockly.Dart.ORDER_UNARY_POSTFIX],
|
||||
SQRT1_2: ['Math.SQRT1_2', Blockly.Dart.ORDER_UNARY_POSTFIX],
|
||||
INFINITY: ['double.INFINITY', Blockly.Dart.ORDER_ATOMIC]
|
||||
'PI': ['Math.PI', Blockly.Dart.ORDER_UNARY_POSTFIX],
|
||||
'E': ['Math.E', Blockly.Dart.ORDER_UNARY_POSTFIX],
|
||||
'GOLDEN_RATIO':
|
||||
['(1 + Math.sqrt(5)) / 2', Blockly.Dart.ORDER_MULTIPLICATIVE],
|
||||
'SQRT2': ['Math.SQRT2', Blockly.Dart.ORDER_UNARY_POSTFIX],
|
||||
'SQRT1_2': ['Math.SQRT1_2', Blockly.Dart.ORDER_UNARY_POSTFIX],
|
||||
'INFINITY': ['double.INFINITY', Blockly.Dart.ORDER_ATOMIC]
|
||||
};
|
||||
var constant = block.getFieldValue('CONSTANT');
|
||||
if (constant != 'INFINITY') {
|
||||
|
||||
@@ -34,6 +34,11 @@ Blockly.Dart['procedures_defreturn'] = function(block) {
|
||||
var funcName = Blockly.Dart.variableDB_.getName(block.getFieldValue('NAME'),
|
||||
Blockly.Procedures.NAME_TYPE);
|
||||
var branch = Blockly.Dart.statementToCode(block, 'STACK');
|
||||
if (Blockly.Dart.STATEMENT_PREFIX) {
|
||||
branch = Blockly.Dart.prefixLines(
|
||||
Blockly.Dart.STATEMENT_PREFIX.replace(/%1/g,
|
||||
'\'' + block.id + '\''), Blockly.Dart.INDENT) + branch;
|
||||
}
|
||||
if (Blockly.Dart.INFINITE_LOOP_TRAP) {
|
||||
branch = Blockly.Dart.INFINITE_LOOP_TRAP.replace(/%1/g,
|
||||
'\'' + block.id + '\'') + branch;
|
||||
|
||||
@@ -188,9 +188,9 @@ Blockly.Dart['text_getSubstring'] = function(block) {
|
||||
Blockly.Dart['text_changeCase'] = function(block) {
|
||||
// Change capitalization.
|
||||
var OPERATORS = {
|
||||
UPPERCASE: '.toUpperCase()',
|
||||
LOWERCASE: '.toLowerCase()',
|
||||
TITLECASE: null
|
||||
'UPPERCASE': '.toUpperCase()',
|
||||
'LOWERCASE': '.toLowerCase()',
|
||||
'TITLECASE': null
|
||||
};
|
||||
var operator = OPERATORS[block.getFieldValue('CASE')];
|
||||
var code;
|
||||
@@ -228,9 +228,9 @@ Blockly.Dart['text_changeCase'] = function(block) {
|
||||
Blockly.Dart['text_trim'] = function(block) {
|
||||
// Trim spaces.
|
||||
var OPERATORS = {
|
||||
LEFT: '.replaceFirst(new RegExp(r\'^\\s+\'), \'\')',
|
||||
RIGHT: '.replaceFirst(new RegExp(r\'\\s+$\'), \'\')',
|
||||
BOTH: '.trim()'
|
||||
'LEFT': '.replaceFirst(new RegExp(r\'^\\s+\'), \'\')',
|
||||
'RIGHT': '.replaceFirst(new RegExp(r\'\\s+$\'), \'\')',
|
||||
'BOTH': '.trim()'
|
||||
};
|
||||
var operator = OPERATORS[block.getFieldValue('MODE')];
|
||||
var argument0 = Blockly.Dart.valueToCode(block, 'TEXT',
|
||||
@@ -246,7 +246,7 @@ Blockly.Dart['text_print'] = function(block) {
|
||||
};
|
||||
|
||||
Blockly.Dart['text_prompt'] = function(block) {
|
||||
// Prompt function.
|
||||
// Prompt function (internal message).
|
||||
Blockly.Dart.definitions_['import_dart_html'] =
|
||||
'import \'dart:html\' as Html;';
|
||||
var msg = Blockly.Dart.quote_(block.getFieldValue('TEXT'));
|
||||
@@ -259,3 +259,19 @@ Blockly.Dart['text_prompt'] = function(block) {
|
||||
}
|
||||
return [code, Blockly.Dart.ORDER_UNARY_POSTFIX];
|
||||
};
|
||||
|
||||
Blockly.Dart['text_prompt_ext'] = function(block) {
|
||||
// Prompt function (external message).
|
||||
Blockly.Dart.definitions_['import_dart_html'] =
|
||||
'import \'dart:html\' as Html;';
|
||||
var msg = Blockly.Dart.valueToCode(block, 'TEXT',
|
||||
Blockly.Dart.ORDER_NONE) || '\'\'';
|
||||
var code = 'Html.window.prompt(' + msg + ', \'\')';
|
||||
var toNumber = block.getFieldValue('TYPE') == 'NUMBER';
|
||||
if (toNumber) {
|
||||
Blockly.Dart.definitions_['import_dart_math'] =
|
||||
'import \'dart:math\' as Math;';
|
||||
code = 'Math.parseDouble(' + code + ')';
|
||||
}
|
||||
return [code, Blockly.Dart.ORDER_UNARY_POSTFIX];
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user