diff --git a/generators/javascript.js b/generators/javascript.js index ecf0c6e2a..e29c05469 100644 --- a/generators/javascript.js +++ b/generators/javascript.js @@ -9,7 +9,8 @@ */ 'use strict'; -goog.provide('Blockly.JavaScript'); +goog.module('Blockly.JavaScript'); +goog.module.declareLegacyNamespace(); goog.require('Blockly.Generator'); goog.require('Blockly.inputTypes'); @@ -22,7 +23,7 @@ goog.require('Blockly.utils.string'); * JavaScript code generator. * @type {!Blockly.Generator} */ -Blockly.JavaScript = new Blockly.Generator('JavaScript'); +const JavaScript = new Blockly.Generator('JavaScript'); /** * List of illegal variable names. @@ -31,7 +32,7 @@ Blockly.JavaScript = new Blockly.Generator('JavaScript'); * accidentally clobbering a built-in object or function. * @private */ -Blockly.JavaScript.addReservedWords( +JavaScript.addReservedWords( // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#Keywords 'break,case,catch,class,const,continue,debugger,default,delete,do,else,export,extends,finally,for,function,if,import,in,instanceof,new,return,super,switch,this,throw,try,typeof,var,void,while,with,yield,' + 'enum,' + @@ -47,84 +48,84 @@ Blockly.JavaScript.addReservedWords( * Order of operation ENUMs. * https://developer.mozilla.org/en/JavaScript/Reference/Operators/Operator_Precedence */ -Blockly.JavaScript.ORDER_ATOMIC = 0; // 0 "" ... -Blockly.JavaScript.ORDER_NEW = 1.1; // new -Blockly.JavaScript.ORDER_MEMBER = 1.2; // . [] -Blockly.JavaScript.ORDER_FUNCTION_CALL = 2; // () -Blockly.JavaScript.ORDER_INCREMENT = 3; // ++ -Blockly.JavaScript.ORDER_DECREMENT = 3; // -- -Blockly.JavaScript.ORDER_BITWISE_NOT = 4.1; // ~ -Blockly.JavaScript.ORDER_UNARY_PLUS = 4.2; // + -Blockly.JavaScript.ORDER_UNARY_NEGATION = 4.3; // - -Blockly.JavaScript.ORDER_LOGICAL_NOT = 4.4; // ! -Blockly.JavaScript.ORDER_TYPEOF = 4.5; // typeof -Blockly.JavaScript.ORDER_VOID = 4.6; // void -Blockly.JavaScript.ORDER_DELETE = 4.7; // delete -Blockly.JavaScript.ORDER_AWAIT = 4.8; // await -Blockly.JavaScript.ORDER_EXPONENTIATION = 5.0; // ** -Blockly.JavaScript.ORDER_MULTIPLICATION = 5.1; // * -Blockly.JavaScript.ORDER_DIVISION = 5.2; // / -Blockly.JavaScript.ORDER_MODULUS = 5.3; // % -Blockly.JavaScript.ORDER_SUBTRACTION = 6.1; // - -Blockly.JavaScript.ORDER_ADDITION = 6.2; // + -Blockly.JavaScript.ORDER_BITWISE_SHIFT = 7; // << >> >>> -Blockly.JavaScript.ORDER_RELATIONAL = 8; // < <= > >= -Blockly.JavaScript.ORDER_IN = 8; // in -Blockly.JavaScript.ORDER_INSTANCEOF = 8; // instanceof -Blockly.JavaScript.ORDER_EQUALITY = 9; // == != === !== -Blockly.JavaScript.ORDER_BITWISE_AND = 10; // & -Blockly.JavaScript.ORDER_BITWISE_XOR = 11; // ^ -Blockly.JavaScript.ORDER_BITWISE_OR = 12; // | -Blockly.JavaScript.ORDER_LOGICAL_AND = 13; // && -Blockly.JavaScript.ORDER_LOGICAL_OR = 14; // || -Blockly.JavaScript.ORDER_CONDITIONAL = 15; // ?: -Blockly.JavaScript.ORDER_ASSIGNMENT = 16; // = += -= **= *= /= %= <<= >>= ... -Blockly.JavaScript.ORDER_YIELD = 17; // yield -Blockly.JavaScript.ORDER_COMMA = 18; // , -Blockly.JavaScript.ORDER_NONE = 99; // (...) +JavaScript.ORDER_ATOMIC = 0; // 0 "" ... +JavaScript.ORDER_NEW = 1.1; // new +JavaScript.ORDER_MEMBER = 1.2; // . [] +JavaScript.ORDER_FUNCTION_CALL = 2; // () +JavaScript.ORDER_INCREMENT = 3; // ++ +JavaScript.ORDER_DECREMENT = 3; // -- +JavaScript.ORDER_BITWISE_NOT = 4.1; // ~ +JavaScript.ORDER_UNARY_PLUS = 4.2; // + +JavaScript.ORDER_UNARY_NEGATION = 4.3; // - +JavaScript.ORDER_LOGICAL_NOT = 4.4; // ! +JavaScript.ORDER_TYPEOF = 4.5; // typeof +JavaScript.ORDER_VOID = 4.6; // void +JavaScript.ORDER_DELETE = 4.7; // delete +JavaScript.ORDER_AWAIT = 4.8; // await +JavaScript.ORDER_EXPONENTIATION = 5.0; // ** +JavaScript.ORDER_MULTIPLICATION = 5.1; // * +JavaScript.ORDER_DIVISION = 5.2; // / +JavaScript.ORDER_MODULUS = 5.3; // % +JavaScript.ORDER_SUBTRACTION = 6.1; // - +JavaScript.ORDER_ADDITION = 6.2; // + +JavaScript.ORDER_BITWISE_SHIFT = 7; // << >> >>> +JavaScript.ORDER_RELATIONAL = 8; // < <= > >= +JavaScript.ORDER_IN = 8; // in +JavaScript.ORDER_INSTANCEOF = 8; // instanceof +JavaScript.ORDER_EQUALITY = 9; // == != === !== +JavaScript.ORDER_BITWISE_AND = 10; // & +JavaScript.ORDER_BITWISE_XOR = 11; // ^ +JavaScript.ORDER_BITWISE_OR = 12; // | +JavaScript.ORDER_LOGICAL_AND = 13; // && +JavaScript.ORDER_LOGICAL_OR = 14; // || +JavaScript.ORDER_CONDITIONAL = 15; // ?: +JavaScript.ORDER_ASSIGNMENT = 16; // = += -= **= *= /= %= <<= >>= ... +JavaScript.ORDER_YIELD = 17; // yield +JavaScript.ORDER_COMMA = 18; // , +JavaScript.ORDER_NONE = 99; // (...) /** * List of outer-inner pairings that do NOT require parentheses. * @type {!Array>} */ -Blockly.JavaScript.ORDER_OVERRIDES = [ +JavaScript.ORDER_OVERRIDES = [ // (foo()).bar -> foo().bar // (foo())[0] -> foo()[0] - [Blockly.JavaScript.ORDER_FUNCTION_CALL, Blockly.JavaScript.ORDER_MEMBER], + [JavaScript.ORDER_FUNCTION_CALL, JavaScript.ORDER_MEMBER], // (foo())() -> foo()() - [Blockly.JavaScript.ORDER_FUNCTION_CALL, Blockly.JavaScript.ORDER_FUNCTION_CALL], + [JavaScript.ORDER_FUNCTION_CALL, JavaScript.ORDER_FUNCTION_CALL], // (foo.bar).baz -> foo.bar.baz // (foo.bar)[0] -> foo.bar[0] // (foo[0]).bar -> foo[0].bar // (foo[0])[1] -> foo[0][1] - [Blockly.JavaScript.ORDER_MEMBER, Blockly.JavaScript.ORDER_MEMBER], + [JavaScript.ORDER_MEMBER, JavaScript.ORDER_MEMBER], // (foo.bar)() -> foo.bar() // (foo[0])() -> foo[0]() - [Blockly.JavaScript.ORDER_MEMBER, Blockly.JavaScript.ORDER_FUNCTION_CALL], + [JavaScript.ORDER_MEMBER, JavaScript.ORDER_FUNCTION_CALL], // !(!foo) -> !!foo - [Blockly.JavaScript.ORDER_LOGICAL_NOT, Blockly.JavaScript.ORDER_LOGICAL_NOT], + [JavaScript.ORDER_LOGICAL_NOT, JavaScript.ORDER_LOGICAL_NOT], // a * (b * c) -> a * b * c - [Blockly.JavaScript.ORDER_MULTIPLICATION, Blockly.JavaScript.ORDER_MULTIPLICATION], + [JavaScript.ORDER_MULTIPLICATION, JavaScript.ORDER_MULTIPLICATION], // a + (b + c) -> a + b + c - [Blockly.JavaScript.ORDER_ADDITION, Blockly.JavaScript.ORDER_ADDITION], + [JavaScript.ORDER_ADDITION, JavaScript.ORDER_ADDITION], // a && (b && c) -> a && b && c - [Blockly.JavaScript.ORDER_LOGICAL_AND, Blockly.JavaScript.ORDER_LOGICAL_AND], + [JavaScript.ORDER_LOGICAL_AND, JavaScript.ORDER_LOGICAL_AND], // a || (b || c) -> a || b || c - [Blockly.JavaScript.ORDER_LOGICAL_OR, Blockly.JavaScript.ORDER_LOGICAL_OR] + [JavaScript.ORDER_LOGICAL_OR, JavaScript.ORDER_LOGICAL_OR] ]; /** * Whether the init method has been called. * @type {?boolean} */ -Blockly.JavaScript.isInitialized = false; +JavaScript.isInitialized = false; /** * Initialise the database of variable names. * @param {!Blockly.Workspace} workspace Workspace to generate code from. */ -Blockly.JavaScript.init = function(workspace) { +JavaScript.init = function(workspace) { // Call Blockly.Generator's init. Object.getPrototypeOf(this).init.call(this); @@ -165,7 +166,7 @@ Blockly.JavaScript.init = function(workspace) { * @param {string} code Generated code. * @return {string} Completed code. */ -Blockly.JavaScript.finish = function(code) { +JavaScript.finish = function(code) { // Convert the definitions dictionary into a list. const definitions = Blockly.utils.object.values(this.definitions_); // Call Blockly.Generator's finish. @@ -182,7 +183,7 @@ Blockly.JavaScript.finish = function(code) { * @param {string} line Line of generated code. * @return {string} Legal line of code. */ -Blockly.JavaScript.scrubNakedValue = function(line) { +JavaScript.scrubNakedValue = function(line) { return line + ';\n'; }; @@ -193,7 +194,7 @@ Blockly.JavaScript.scrubNakedValue = function(line) { * @return {string} JavaScript string. * @protected */ -Blockly.JavaScript.quote_ = function(string) { +JavaScript.quote_ = function(string) { // Can't use goog.string.quote since Google's style guide recommends // JS string literals use single quotes. string = string.replace(/\\/g, '\\\\') @@ -209,7 +210,7 @@ Blockly.JavaScript.quote_ = function(string) { * @return {string} JavaScript string. * @protected */ -Blockly.JavaScript.multiline_quote_ = function(string) { +JavaScript.multiline_quote_ = function(string) { // Can't use goog.string.quote since Google's style guide recommends // JS string literals use single quotes. const lines = string.split(/\n/g).map(this.quote_); @@ -226,7 +227,7 @@ Blockly.JavaScript.multiline_quote_ = function(string) { * @return {string} JavaScript code with comments and subsequent blocks added. * @protected */ -Blockly.JavaScript.scrub_ = function(block, code, opt_thisOnly) { +JavaScript.scrub_ = function(block, code, opt_thisOnly) { let commentCode = ''; // Only collect comments for blocks that aren't inline. if (!block.outputConnection || !block.outputConnection.targetConnection) { @@ -264,7 +265,7 @@ Blockly.JavaScript.scrub_ = function(block, code, opt_thisOnly) { * @param {number=} opt_order The highest order acting on this value. * @return {string|number} */ -Blockly.JavaScript.getAdjusted = function(block, atId, opt_delta, opt_negate, +JavaScript.getAdjusted = function(block, atId, opt_delta, opt_negate, opt_order) { let delta = opt_delta || 0; let order = opt_order || this.ORDER_NONE; @@ -316,3 +317,5 @@ Blockly.JavaScript.getAdjusted = function(block, atId, opt_delta, opt_negate, } return at; }; + +exports = JavaScript; diff --git a/generators/javascript/colour.js b/generators/javascript/colour.js index 1d204c643..33d27ef83 100644 --- a/generators/javascript/colour.js +++ b/generators/javascript/colour.js @@ -9,7 +9,7 @@ */ 'use strict'; -goog.provide('Blockly.JavaScript.colour'); +goog.module('Blockly.JavaScript.colour'); goog.require('Blockly.JavaScript'); diff --git a/generators/javascript/lists.js b/generators/javascript/lists.js index c85a45968..f11a232a7 100644 --- a/generators/javascript/lists.js +++ b/generators/javascript/lists.js @@ -9,7 +9,7 @@ */ 'use strict'; -goog.provide('Blockly.JavaScript.lists'); +goog.module('Blockly.JavaScript.lists'); goog.require('Blockly.JavaScript'); @@ -247,9 +247,8 @@ Blockly.JavaScript['lists_setIndex'] = function(block) { * @param {string} where The method of indexing, selected by dropdown in Blockly * @param {string=} opt_at The optional offset when indexing from start/end. * @return {string|undefined} Index expression. - * @private */ -Blockly.JavaScript.lists.getIndex_ = function(listName, where, opt_at) { +const getIndex_ = function(listName, where, opt_at) { if (where === 'FIRST') { return '0'; } else if (where === 'FROM_END') { @@ -310,7 +309,6 @@ Blockly.JavaScript['lists_getSublist'] = function(block) { } else { const at1 = Blockly.JavaScript.getAdjusted(block, 'AT1'); const at2 = Blockly.JavaScript.getAdjusted(block, 'AT2'); - const getIndex_ = Blockly.JavaScript.lists.getIndex_; const wherePascalCase = {'FIRST': 'First', 'LAST': 'Last', 'FROM_START': 'FromStart', 'FROM_END': 'FromEnd'}; const functionName = Blockly.JavaScript.provideFunction_( diff --git a/generators/javascript/logic.js b/generators/javascript/logic.js index a769a8709..125ba8ad5 100644 --- a/generators/javascript/logic.js +++ b/generators/javascript/logic.js @@ -9,7 +9,7 @@ */ 'use strict'; -goog.provide('Blockly.JavaScript.logic'); +goog.module('Blockly.JavaScript.logic'); goog.require('Blockly.JavaScript'); diff --git a/generators/javascript/loops.js b/generators/javascript/loops.js index 47975698e..8300747e7 100644 --- a/generators/javascript/loops.js +++ b/generators/javascript/loops.js @@ -9,7 +9,7 @@ */ 'use strict'; -goog.provide('Blockly.JavaScript.loops'); +goog.module('Blockly.JavaScript.loops'); goog.require('Blockly.JavaScript'); diff --git a/generators/javascript/math.js b/generators/javascript/math.js index 2e3828cac..e006922c4 100644 --- a/generators/javascript/math.js +++ b/generators/javascript/math.js @@ -9,7 +9,7 @@ */ 'use strict'; -goog.provide('Blockly.JavaScript.math'); +goog.module('Blockly.JavaScript.math'); goog.require('Blockly.JavaScript'); diff --git a/generators/javascript/procedures.js b/generators/javascript/procedures.js index a95fe0546..9c484a086 100644 --- a/generators/javascript/procedures.js +++ b/generators/javascript/procedures.js @@ -9,7 +9,7 @@ */ 'use strict'; -goog.provide('Blockly.JavaScript.procedures'); +goog.module('Blockly.JavaScript.procedures'); goog.require('Blockly.JavaScript'); diff --git a/generators/javascript/text.js b/generators/javascript/text.js index f9e203fc2..e74ff0e02 100644 --- a/generators/javascript/text.js +++ b/generators/javascript/text.js @@ -9,7 +9,7 @@ */ 'use strict'; -goog.provide('Blockly.JavaScript.texts'); +goog.module('Blockly.JavaScript.texts'); goog.require('Blockly.JavaScript'); diff --git a/generators/javascript/variables.js b/generators/javascript/variables.js index 0361709c1..ff478050b 100644 --- a/generators/javascript/variables.js +++ b/generators/javascript/variables.js @@ -9,7 +9,7 @@ */ 'use strict'; -goog.provide('Blockly.JavaScript.variables'); +goog.module('Blockly.JavaScript.variables'); goog.require('Blockly.JavaScript'); diff --git a/generators/javascript/variables_dynamic.js b/generators/javascript/variables_dynamic.js index d9b25cacc..ac311278f 100644 --- a/generators/javascript/variables_dynamic.js +++ b/generators/javascript/variables_dynamic.js @@ -9,7 +9,7 @@ */ 'use strict'; -goog.provide('Blockly.JavaScript.variablesDynamic'); +goog.module('Blockly.JavaScript.variablesDynamic'); goog.require('Blockly.JavaScript'); goog.require('Blockly.JavaScript.variables'); diff --git a/tests/deps.js b/tests/deps.js index 00a200c2c..b50d704dd 100644 --- a/tests/deps.js +++ b/tests/deps.js @@ -274,16 +274,16 @@ goog.addDependency('../../generators/dart/procedures.js', ['Blockly.Dart.procedu 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'], {'lang': 'es6'}); -goog.addDependency('../../generators/javascript/colour.js', ['Blockly.JavaScript.colour'], ['Blockly.JavaScript'], {'lang': 'es6'}); -goog.addDependency('../../generators/javascript/lists.js', ['Blockly.JavaScript.lists'], ['Blockly.JavaScript'], {'lang': 'es6'}); -goog.addDependency('../../generators/javascript/logic.js', ['Blockly.JavaScript.logic'], ['Blockly.JavaScript'], {'lang': 'es6'}); -goog.addDependency('../../generators/javascript/loops.js', ['Blockly.JavaScript.loops'], ['Blockly.JavaScript'], {'lang': 'es6'}); -goog.addDependency('../../generators/javascript/math.js', ['Blockly.JavaScript.math'], ['Blockly.JavaScript'], {'lang': 'es6'}); -goog.addDependency('../../generators/javascript/procedures.js', ['Blockly.JavaScript.procedures'], ['Blockly.JavaScript'], {'lang': 'es6'}); -goog.addDependency('../../generators/javascript/text.js', ['Blockly.JavaScript.texts'], ['Blockly.JavaScript'], {'lang': 'es6'}); -goog.addDependency('../../generators/javascript/variables.js', ['Blockly.JavaScript.variables'], ['Blockly.JavaScript'], {'lang': 'es6'}); -goog.addDependency('../../generators/javascript/variables_dynamic.js', ['Blockly.JavaScript.variablesDynamic'], ['Blockly.JavaScript', 'Blockly.JavaScript.variables']); +goog.addDependency('../../generators/javascript.js', ['Blockly.JavaScript'], ['Blockly.Generator', 'Blockly.inputTypes', 'Blockly.utils.global', 'Blockly.utils.object', 'Blockly.utils.string'], {'lang': 'es6', 'module': 'goog'}); +goog.addDependency('../../generators/javascript/colour.js', ['Blockly.JavaScript.colour'], ['Blockly.JavaScript'], {'lang': 'es6', 'module': 'goog'}); +goog.addDependency('../../generators/javascript/lists.js', ['Blockly.JavaScript.lists'], ['Blockly.JavaScript'], {'lang': 'es6', 'module': 'goog'}); +goog.addDependency('../../generators/javascript/logic.js', ['Blockly.JavaScript.logic'], ['Blockly.JavaScript'], {'lang': 'es6', 'module': 'goog'}); +goog.addDependency('../../generators/javascript/loops.js', ['Blockly.JavaScript.loops'], ['Blockly.JavaScript'], {'lang': 'es6', 'module': 'goog'}); +goog.addDependency('../../generators/javascript/math.js', ['Blockly.JavaScript.math'], ['Blockly.JavaScript'], {'lang': 'es6', 'module': 'goog'}); +goog.addDependency('../../generators/javascript/procedures.js', ['Blockly.JavaScript.procedures'], ['Blockly.JavaScript'], {'lang': 'es6', 'module': 'goog'}); +goog.addDependency('../../generators/javascript/text.js', ['Blockly.JavaScript.texts'], ['Blockly.JavaScript'], {'lang': 'es6', 'module': 'goog'}); +goog.addDependency('../../generators/javascript/variables.js', ['Blockly.JavaScript.variables'], ['Blockly.JavaScript'], {'lang': 'es6', 'module': 'goog'}); +goog.addDependency('../../generators/javascript/variables_dynamic.js', ['Blockly.JavaScript.variablesDynamic'], ['Blockly.JavaScript', 'Blockly.JavaScript.variables'], {'module': 'goog'}); goog.addDependency('../../generators/lua.js', ['Blockly.Lua'], ['Blockly.Generator', 'Blockly.inputTypes', 'Blockly.utils.object', 'Blockly.utils.string'], {'lang': 'es6'}); goog.addDependency('../../generators/lua/colour.js', ['Blockly.Lua.colour'], ['Blockly.Lua'], {'lang': 'es6'}); goog.addDependency('../../generators/lua/lists.js', ['Blockly.Lua.lists'], ['Blockly.Lua'], {'lang': 'es6'});