Update to latest version.

This commit is contained in:
Neil Fraser
2014-09-08 14:26:52 -07:00
parent 58f264f4ce
commit d998a1c8ec
737 changed files with 29546 additions and 27625 deletions

View File

@@ -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;

View File

@@ -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];
};

View File

@@ -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;

View File

@@ -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') {

View File

@@ -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;

View File

@@ -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];
};