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

@@ -52,12 +52,12 @@ Blockly.JavaScript['controls_if'] = function(block) {
Blockly.JavaScript['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 == '!=') ?
@@ -121,6 +121,6 @@ Blockly.JavaScript['logic_ternary'] = function(block) {
Blockly.JavaScript.ORDER_CONDITIONAL) || 'null';
var value_else = Blockly.JavaScript.valueToCode(block, 'ELSE',
Blockly.JavaScript.ORDER_CONDITIONAL) || 'null';
var code = value_if + ' ? ' + value_then + ' : ' + value_else
var code = value_if + ' ? ' + value_then + ' : ' + value_else;
return [code, Blockly.JavaScript.ORDER_CONDITIONAL];
};

View File

@@ -33,10 +33,7 @@ Blockly.JavaScript['controls_repeat'] = function(block) {
// Repeat n times (internal number).
var repeats = Number(block.getFieldValue('TIMES'));
var branch = Blockly.JavaScript.statementToCode(block, 'DO');
if (Blockly.JavaScript.INFINITE_LOOP_TRAP) {
branch = Blockly.JavaScript.INFINITE_LOOP_TRAP.replace(/%1/g,
'\'' + block.id + '\'') + branch;
}
branch = Blockly.JavaScript.addLoopTrap(branch, block.id);
var loopVar = Blockly.JavaScript.variableDB_.getDistinctName(
'count', Blockly.Variables.NAME_TYPE);
var code = 'for (var ' + loopVar + ' = 0; ' +
@@ -51,10 +48,7 @@ Blockly.JavaScript['controls_repeat_ext'] = function(block) {
var repeats = Blockly.JavaScript.valueToCode(block, 'TIMES',
Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var branch = Blockly.JavaScript.statementToCode(block, 'DO');
if (Blockly.JavaScript.INFINITE_LOOP_TRAP) {
branch = Blockly.JavaScript.INFINITE_LOOP_TRAP.replace(/%1/g,
'\'' + block.id + '\'') + branch;
}
branch = Blockly.JavaScript.addLoopTrap(branch, block.id);
var code = '';
var loopVar = Blockly.JavaScript.variableDB_.getDistinctName(
'count', Blockly.Variables.NAME_TYPE);
@@ -78,10 +72,7 @@ Blockly.JavaScript['controls_whileUntil'] = function(block) {
until ? Blockly.JavaScript.ORDER_LOGICAL_NOT :
Blockly.JavaScript.ORDER_NONE) || 'false';
var branch = Blockly.JavaScript.statementToCode(block, 'DO');
if (Blockly.JavaScript.INFINITE_LOOP_TRAP) {
branch = Blockly.JavaScript.INFINITE_LOOP_TRAP.replace(/%1/g,
'\'' + block.id + '\'') + branch;
}
branch = Blockly.JavaScript.addLoopTrap(branch, block.id);
if (until) {
argument0 = '!' + argument0;
}
@@ -99,10 +90,7 @@ Blockly.JavaScript['controls_for'] = function(block) {
var increment = Blockly.JavaScript.valueToCode(block, 'BY',
Blockly.JavaScript.ORDER_ASSIGNMENT) || '1';
var branch = Blockly.JavaScript.statementToCode(block, 'DO');
if (Blockly.JavaScript.INFINITE_LOOP_TRAP) {
branch = Blockly.JavaScript.INFINITE_LOOP_TRAP.replace(/%1/g,
'\'' + block.id + '\'') + branch;
}
branch = Blockly.JavaScript.addLoopTrap(branch, block.id);
var code;
if (Blockly.isNumber(argument0) && Blockly.isNumber(argument1) &&
Blockly.isNumber(increment)) {
@@ -144,10 +132,10 @@ Blockly.JavaScript['controls_for'] = function(block) {
code += 'Math.abs(' + increment + ');\n';
}
code += 'if (' + startVar + ' > ' + endVar + ') {\n';
code += ' ' + incVar + ' = -' + incVar +';\n';
code += Blockly.JavaScript.INDENT + incVar + ' = -' + incVar + ';\n';
code += '}\n';
code += 'for (' + variable0 + ' = ' + startVar + ';\n' +
' ' + incVar + ' >= 0 ? ' +
' ' + incVar + ' >= 0 ? ' +
variable0 + ' <= ' + endVar + ' : ' +
variable0 + ' >= ' + endVar + ';\n' +
' ' + variable0 + ' += ' + incVar + ') {\n' +
@@ -163,14 +151,11 @@ Blockly.JavaScript['controls_forEach'] = function(block) {
var argument0 = Blockly.JavaScript.valueToCode(block, 'LIST',
Blockly.JavaScript.ORDER_ASSIGNMENT) || '[]';
var branch = Blockly.JavaScript.statementToCode(block, 'DO');
if (Blockly.JavaScript.INFINITE_LOOP_TRAP) {
branch = Blockly.JavaScript.INFINITE_LOOP_TRAP.replace(/%1/g,
'\'' + block.id + '\'') + branch;
}
branch = Blockly.JavaScript.addLoopTrap(branch, block.id);
var indexVar = Blockly.JavaScript.variableDB_.getDistinctName(
variable0 + '_index', Blockly.Variables.NAME_TYPE);
branch = ' ' + variable0 + ' = ' + argument0 + '[' + indexVar + '];\n' +
branch;
branch = Blockly.JavaScript.INDENT + variable0 + ' = ' +
argument0 + '[' + indexVar + '];\n' + branch;
var code = 'for (var ' + indexVar + ' in ' + argument0 + ') {\n' +
branch + '}\n';
return code;

View File

@@ -38,11 +38,11 @@ Blockly.JavaScript['math_number'] = function(block) {
Blockly.JavaScript['math_arithmetic'] = function(block) {
// Basic arithmetic operators, and power.
var OPERATORS = {
ADD: [' + ', Blockly.JavaScript.ORDER_ADDITION],
MINUS: [' - ', Blockly.JavaScript.ORDER_SUBTRACTION],
MULTIPLY: [' * ', Blockly.JavaScript.ORDER_MULTIPLICATION],
DIVIDE: [' / ', Blockly.JavaScript.ORDER_DIVISION],
POWER: [null, Blockly.JavaScript.ORDER_COMMA] // Handle power separately.
'ADD': [' + ', Blockly.JavaScript.ORDER_ADDITION],
'MINUS': [' - ', Blockly.JavaScript.ORDER_SUBTRACTION],
'MULTIPLY': [' * ', Blockly.JavaScript.ORDER_MULTIPLICATION],
'DIVIDE': [' / ', Blockly.JavaScript.ORDER_DIVISION],
'POWER': [null, Blockly.JavaScript.ORDER_COMMA] // Handle power separately.
};
var tuple = OPERATORS[block.getFieldValue('OP')];
var operator = tuple[0];
@@ -146,12 +146,13 @@ Blockly.JavaScript['math_single'] = function(block) {
Blockly.JavaScript['math_constant'] = function(block) {
// Constants: PI, E, the Golden Ratio, sqrt(2), 1/sqrt(2), INFINITY.
var CONSTANTS = {
PI: ['Math.PI', Blockly.JavaScript.ORDER_MEMBER],
E: ['Math.E', Blockly.JavaScript.ORDER_MEMBER],
GOLDEN_RATIO: ['(1 + Math.sqrt(5)) / 2', Blockly.JavaScript.ORDER_DIVISION],
SQRT2: ['Math.SQRT2', Blockly.JavaScript.ORDER_MEMBER],
SQRT1_2: ['Math.SQRT1_2', Blockly.JavaScript.ORDER_MEMBER],
INFINITY: ['Infinity', Blockly.JavaScript.ORDER_ATOMIC]
'PI': ['Math.PI', Blockly.JavaScript.ORDER_MEMBER],
'E': ['Math.E', Blockly.JavaScript.ORDER_MEMBER],
'GOLDEN_RATIO':
['(1 + Math.sqrt(5)) / 2', Blockly.JavaScript.ORDER_DIVISION],
'SQRT2': ['Math.SQRT2', Blockly.JavaScript.ORDER_MEMBER],
'SQRT1_2': ['Math.SQRT1_2', Blockly.JavaScript.ORDER_MEMBER],
'INFINITY': ['Infinity', Blockly.JavaScript.ORDER_ATOMIC]
};
return CONSTANTS[block.getFieldValue('CONSTANT')];
};

View File

@@ -34,6 +34,11 @@ Blockly.JavaScript['procedures_defreturn'] = function(block) {
var funcName = Blockly.JavaScript.variableDB_.getName(
block.getFieldValue('NAME'), Blockly.Procedures.NAME_TYPE);
var branch = Blockly.JavaScript.statementToCode(block, 'STACK');
if (Blockly.JavaScript.STATEMENT_PREFIX) {
branch = Blockly.JavaScript.prefixLines(
Blockly.JavaScript.STATEMENT_PREFIX.replace(/%1/g,
'\'' + block.id + '\''), Blockly.JavaScript.INDENT) + branch;
}
if (Blockly.JavaScript.INFINITE_LOOP_TRAP) {
branch = Blockly.JavaScript.INFINITE_LOOP_TRAP.replace(/%1/g,
'\'' + block.id + '\'') + branch;

View File

@@ -185,9 +185,9 @@ Blockly.JavaScript['text_getSubstring'] = function(block) {
Blockly.JavaScript['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;
@@ -200,7 +200,8 @@ Blockly.JavaScript['text_changeCase'] = function(block) {
// Title case is not a native JavaScript function. Define one.
var functionName = Blockly.JavaScript.provideFunction_(
'text_toTitleCase',
[ 'function ' + Blockly.JavaScript.FUNCTION_NAME_PLACEHOLDER_ + '(str) {',
[ 'function ' +
Blockly.JavaScript.FUNCTION_NAME_PLACEHOLDER_ + '(str) {',
' return str.replace(/\\S+/g,',
' function(txt) {return txt[0].toUpperCase() + ' +
'txt.substring(1).toLowerCase();});',
@@ -215,9 +216,9 @@ Blockly.JavaScript['text_changeCase'] = function(block) {
Blockly.JavaScript['text_trim'] = function(block) {
// Trim spaces.
var OPERATORS = {
LEFT: '.trimLeft()',
RIGHT: '.trimRight()',
BOTH: '.trim()'
'LEFT': '.trimLeft()',
'RIGHT': '.trimRight()',
'BOTH': '.trim()'
};
var operator = OPERATORS[block.getFieldValue('MODE')];
var argument0 = Blockly.JavaScript.valueToCode(block, 'TEXT',
@@ -233,7 +234,7 @@ Blockly.JavaScript['text_print'] = function(block) {
};
Blockly.JavaScript['text_prompt'] = function(block) {
// Prompt function.
// Prompt function (internal message).
var msg = Blockly.JavaScript.quote_(block.getFieldValue('TEXT'));
var code = 'window.prompt(' + msg + ')';
var toNumber = block.getFieldValue('TYPE') == 'NUMBER';
@@ -242,3 +243,15 @@ Blockly.JavaScript['text_prompt'] = function(block) {
}
return [code, Blockly.JavaScript.ORDER_FUNCTION_CALL];
};
Blockly.JavaScript['text_prompt_ext'] = function(block) {
// Prompt function (external message).
var msg = Blockly.JavaScript.valueToCode(block, 'TEXT',
Blockly.JavaScript.ORDER_NONE) || '\'\'';
var code = 'window.prompt(' + msg + ')';
var toNumber = block.getFieldValue('TYPE') == 'NUMBER';
if (toNumber) {
code = 'parseFloat(' + code + ')';
}
return [code, Blockly.JavaScript.ORDER_FUNCTION_CALL];
};