diff --git a/core/generator.js b/core/generator.js index d0583b2ee..8f91b33b9 100644 --- a/core/generator.js +++ b/core/generator.js @@ -505,8 +505,8 @@ Blockly.Generator.prototype.scrub_ = function(_block, code, _opt_thisOnly) { /** * Hook for code to run at end of code generation. - * Subclasses may override this, e.g. to prepend the generated code with the - * variable definitions. + * Subclasses may override this, e.g. to prepend the generated code with import + * statements or variable definitions. * @param {string} code Generated code. * @return {string} Completed code. */ diff --git a/generators/dart.js b/generators/dart.js index 26156f636..640a11b9b 100644 --- a/generators/dart.js +++ b/generators/dart.js @@ -86,54 +86,54 @@ Blockly.Dart.init = function(workspace) { // Call Blockly.Generator's init. Object.getPrototypeOf(this).init.call(this); - if (!Blockly.Dart.nameDB_) { - Blockly.Dart.nameDB_ = new Blockly.Names(Blockly.Dart.RESERVED_WORDS_); + if (!this.nameDB_) { + this.nameDB_ = new Blockly.Names(this.RESERVED_WORDS_); } else { - Blockly.Dart.nameDB_.reset(); + this.nameDB_.reset(); } - Blockly.Dart.nameDB_.setVariableMap(workspace.getVariableMap()); + this.nameDB_.setVariableMap(workspace.getVariableMap()); var defvars = []; // Add developer variables (not created or named by the user). var devVarList = Blockly.Variables.allDeveloperVariables(workspace); for (var i = 0; i < devVarList.length; i++) { - defvars.push(Blockly.Dart.nameDB_.getName(devVarList[i], + defvars.push(this.nameDB_.getName(devVarList[i], Blockly.Names.DEVELOPER_VARIABLE_TYPE)); } // Add user variables, but only ones that are being used. var variables = Blockly.Variables.allUsedVarModels(workspace); for (var i = 0; i < variables.length; i++) { - defvars.push(Blockly.Dart.nameDB_.getName(variables[i].getId(), + defvars.push(this.nameDB_.getName(variables[i].getId(), Blockly.VARIABLE_CATEGORY_NAME)); } // Declare all of the variables. if (defvars.length) { - Blockly.Dart.definitions_['variables'] = + this.definitions_['variables'] = 'var ' + defvars.join(', ') + ';'; } this.isInitialized = true; }; /** - * Prepend the generated code with the variable definitions. + * Prepend the generated code with import statements and variable definitions. * @param {string} code Generated code. * @return {string} Completed code. */ Blockly.Dart.finish = function(code) { // Indent every line. if (code) { - code = Blockly.Dart.prefixLines(code, Blockly.Dart.INDENT); + code = this.prefixLines(code, this.INDENT); } code = 'main() {\n' + code + '}'; // Convert the definitions dictionary into a list. var imports = []; var definitions = []; - for (var name in Blockly.Dart.definitions_) { - var def = Blockly.Dart.definitions_[name]; + for (var name in this.definitions_) { + var def = this.definitions_[name]; if (def.match(/^import\s/)) { imports.push(def); } else { @@ -144,7 +144,7 @@ Blockly.Dart.finish = function(code) { code = Object.getPrototypeOf(this).finish.call(this, code); this.isInitialized = false; - Blockly.Dart.nameDB_.reset(); + this.nameDB_.reset(); var allDefs = imports.join('\n') + '\n\n' + definitions.join('\n\n'); return allDefs.replace(/\n\n+/g, '\n\n').replace(/\n*$/, '\n\n\n') + code; }; @@ -182,7 +182,7 @@ Blockly.Dart.quote_ = function(string) { * @protected */ Blockly.Dart.multiline_quote_ = function (string) { - var lines = string.split(/\n/g).map(Blockly.Dart.quote_); + var lines = string.split(/\n/g).map(this.quote_); // Join with the following, plus a newline: // + '\n' + return lines.join(' + \'\\n\' + \n'); @@ -205,13 +205,12 @@ Blockly.Dart.scrub_ = function(block, code, opt_thisOnly) { // Collect comment for this block. var comment = block.getCommentText(); if (comment) { - comment = Blockly.utils.string.wrap(comment, - Blockly.Dart.COMMENT_WRAP - 3); + comment = Blockly.utils.string.wrap(comment, this.COMMENT_WRAP - 3); if (block.getProcedureDef) { // Use documentation comment for function comments. - commentCode += Blockly.Dart.prefixLines(comment + '\n', '/// '); + commentCode += this.prefixLines(comment + '\n', '/// '); } else { - commentCode += Blockly.Dart.prefixLines(comment + '\n', '// '); + commentCode += this.prefixLines(comment + '\n', '// '); } } // Collect comments for all value arguments. @@ -220,16 +219,16 @@ Blockly.Dart.scrub_ = function(block, code, opt_thisOnly) { if (block.inputList[i].type == Blockly.inputTypes.VALUE) { var childBlock = block.inputList[i].connection.targetBlock(); if (childBlock) { - comment = Blockly.Dart.allNestedComments(childBlock); + comment = this.allNestedComments(childBlock); if (comment) { - commentCode += Blockly.Dart.prefixLines(comment, '// '); + commentCode += this.prefixLines(comment, '// '); } } } } } var nextBlock = block.nextConnection && block.nextConnection.targetBlock(); - var nextCode = opt_thisOnly ? '' : Blockly.Dart.blockToCode(nextBlock); + var nextCode = opt_thisOnly ? '' : this.blockToCode(nextBlock); return commentCode + code + nextCode; }; @@ -245,19 +244,19 @@ Blockly.Dart.scrub_ = function(block, code, opt_thisOnly) { Blockly.Dart.getAdjusted = function(block, atId, opt_delta, opt_negate, opt_order) { var delta = opt_delta || 0; - var order = opt_order || Blockly.Dart.ORDER_NONE; + var order = opt_order || this.ORDER_NONE; if (block.workspace.options.oneBasedIndex) { delta--; } var defaultAtIndex = block.workspace.options.oneBasedIndex ? '1' : '0'; if (delta) { - var at = Blockly.Dart.valueToCode(block, atId, - Blockly.Dart.ORDER_ADDITIVE) || defaultAtIndex; + var at = this.valueToCode(block, atId, + this.ORDER_ADDITIVE) || defaultAtIndex; } else if (opt_negate) { - var at = Blockly.Dart.valueToCode(block, atId, - Blockly.Dart.ORDER_UNARY_PREFIX) || defaultAtIndex; + var at = this.valueToCode(block, atId, + this.ORDER_UNARY_PREFIX) || defaultAtIndex; } else { - var at = Blockly.Dart.valueToCode(block, atId, order) || + var at = this.valueToCode(block, atId, order) || defaultAtIndex; } @@ -271,10 +270,10 @@ Blockly.Dart.getAdjusted = function(block, atId, opt_delta, opt_negate, // If the index is dynamic, adjust it in code. if (delta > 0) { at = at + ' + ' + delta; - var innerOrder = Blockly.Dart.ORDER_ADDITIVE; + var innerOrder = this.ORDER_ADDITIVE; } else if (delta < 0) { at = at + ' - ' + -delta; - var innerOrder = Blockly.Dart.ORDER_ADDITIVE; + var innerOrder = this.ORDER_ADDITIVE; } if (opt_negate) { if (delta) { @@ -282,7 +281,7 @@ Blockly.Dart.getAdjusted = function(block, atId, opt_delta, opt_negate, } else { at = '-' + at; } - var innerOrder = Blockly.Dart.ORDER_UNARY_PREFIX; + var innerOrder = this.ORDER_UNARY_PREFIX; } innerOrder = Math.floor(innerOrder); order = Math.floor(order); diff --git a/generators/javascript.js b/generators/javascript.js index a12a64123..c15ebd3bc 100644 --- a/generators/javascript.js +++ b/generators/javascript.js @@ -15,6 +15,7 @@ goog.provide('Blockly.JavaScript'); goog.require('Blockly.Generator'); goog.require('Blockly.inputTypes'); goog.require('Blockly.utils.global'); +goog.require('Blockly.utils.object'); goog.require('Blockly.utils.string'); @@ -128,34 +129,32 @@ Blockly.JavaScript.init = function(workspace) { // Call Blockly.Generator's init. Object.getPrototypeOf(this).init.call(this); - if (!Blockly.JavaScript.nameDB_) { - Blockly.JavaScript.nameDB_ = - new Blockly.Names(Blockly.JavaScript.RESERVED_WORDS_); + if (!this.nameDB_) { + this.nameDB_ = new Blockly.Names(this.RESERVED_WORDS_); } else { - Blockly.JavaScript.nameDB_.reset(); + this.nameDB_.reset(); } - Blockly.JavaScript.nameDB_.setVariableMap(workspace.getVariableMap()); + this.nameDB_.setVariableMap(workspace.getVariableMap()); var defvars = []; // Add developer variables (not created or named by the user). var devVarList = Blockly.Variables.allDeveloperVariables(workspace); for (var i = 0; i < devVarList.length; i++) { - defvars.push(Blockly.JavaScript.nameDB_.getName(devVarList[i], + defvars.push(this.nameDB_.getName(devVarList[i], Blockly.Names.DEVELOPER_VARIABLE_TYPE)); } // Add user variables, but only ones that are being used. var variables = Blockly.Variables.allUsedVarModels(workspace); for (var i = 0; i < variables.length; i++) { - defvars.push(Blockly.JavaScript.nameDB_.getName(variables[i].getId(), + defvars.push(this.nameDB_.getName(variables[i].getId(), Blockly.VARIABLE_CATEGORY_NAME)); } // Declare all of the variables. if (defvars.length) { - Blockly.JavaScript.definitions_['variables'] = - 'var ' + defvars.join(', ') + ';'; + this.definitions_['variables'] = 'var ' + defvars.join(', ') + ';'; } this.isInitialized = true; }; @@ -167,15 +166,12 @@ Blockly.JavaScript.init = function(workspace) { */ Blockly.JavaScript.finish = function(code) { // Convert the definitions dictionary into a list. - var definitions = []; - for (var name in Blockly.JavaScript.definitions_) { - definitions.push(Blockly.JavaScript.definitions_[name]); - } + var definitions = Blockly.utils.object.values(this.definitions_); // Call Blockly.Generator's finish. code = Object.getPrototypeOf(this).finish.call(this, code); this.isInitialized = false; - Blockly.JavaScript.nameDB_.reset(); + this.nameDB_.reset(); return definitions.join('\n\n') + '\n\n\n' + code; }; @@ -215,7 +211,7 @@ Blockly.JavaScript.quote_ = function(string) { Blockly.JavaScript.multiline_quote_ = function(string) { // Can't use goog.string.quote since Google's style guide recommends // JS string literals use single quotes. - var lines = string.split(/\n/g).map(Blockly.JavaScript.quote_); + var lines = string.split(/\n/g).map(this.quote_); return lines.join(' + \'\\n\' +\n'); }; @@ -236,9 +232,8 @@ Blockly.JavaScript.scrub_ = function(block, code, opt_thisOnly) { // Collect comment for this block. var comment = block.getCommentText(); if (comment) { - comment = Blockly.utils.string.wrap(comment, - Blockly.JavaScript.COMMENT_WRAP - 3); - commentCode += Blockly.JavaScript.prefixLines(comment + '\n', '// '); + comment = Blockly.utils.string.wrap(comment, this.COMMENT_WRAP - 3); + commentCode += this.prefixLines(comment + '\n', '// '); } // Collect comments for all value arguments. // Don't collect comments for nested statements. @@ -246,16 +241,16 @@ Blockly.JavaScript.scrub_ = function(block, code, opt_thisOnly) { if (block.inputList[i].type == Blockly.inputTypes.VALUE) { var childBlock = block.inputList[i].connection.targetBlock(); if (childBlock) { - comment = Blockly.JavaScript.allNestedComments(childBlock); + comment = this.allNestedComments(childBlock); if (comment) { - commentCode += Blockly.JavaScript.prefixLines(comment, '// '); + commentCode += this.prefixLines(comment, '// '); } } } } } var nextBlock = block.nextConnection && block.nextConnection.targetBlock(); - var nextCode = opt_thisOnly ? '' : Blockly.JavaScript.blockToCode(nextBlock); + var nextCode = opt_thisOnly ? '' : this.blockToCode(nextBlock); return commentCode + code + nextCode; }; @@ -271,23 +266,22 @@ Blockly.JavaScript.scrub_ = function(block, code, opt_thisOnly) { Blockly.JavaScript.getAdjusted = function(block, atId, opt_delta, opt_negate, opt_order) { var delta = opt_delta || 0; - var order = opt_order || Blockly.JavaScript.ORDER_NONE; + var order = opt_order || this.ORDER_NONE; if (block.workspace.options.oneBasedIndex) { delta--; } var defaultAtIndex = block.workspace.options.oneBasedIndex ? '1' : '0'; if (delta > 0) { - var at = Blockly.JavaScript.valueToCode(block, atId, - Blockly.JavaScript.ORDER_ADDITION) || defaultAtIndex; + var at = this.valueToCode(block, atId, + this.ORDER_ADDITION) || defaultAtIndex; } else if (delta < 0) { - var at = Blockly.JavaScript.valueToCode(block, atId, - Blockly.JavaScript.ORDER_SUBTRACTION) || defaultAtIndex; + var at = this.valueToCode(block, atId, + this.ORDER_SUBTRACTION) || defaultAtIndex; } else if (opt_negate) { - var at = Blockly.JavaScript.valueToCode(block, atId, - Blockly.JavaScript.ORDER_UNARY_NEGATION) || defaultAtIndex; + var at = this.valueToCode(block, atId, + this.ORDER_UNARY_NEGATION) || defaultAtIndex; } else { - var at = Blockly.JavaScript.valueToCode(block, atId, order) || - defaultAtIndex; + var at = this.valueToCode(block, atId, order) || defaultAtIndex; } if (Blockly.isNumber(at)) { @@ -300,10 +294,10 @@ Blockly.JavaScript.getAdjusted = function(block, atId, opt_delta, opt_negate, // If the index is dynamic, adjust it in code. if (delta > 0) { at = at + ' + ' + delta; - var innerOrder = Blockly.JavaScript.ORDER_ADDITION; + var innerOrder = this.ORDER_ADDITION; } else if (delta < 0) { at = at + ' - ' + -delta; - var innerOrder = Blockly.JavaScript.ORDER_SUBTRACTION; + var innerOrder = this.ORDER_SUBTRACTION; } if (opt_negate) { if (delta) { @@ -311,7 +305,7 @@ Blockly.JavaScript.getAdjusted = function(block, atId, opt_delta, opt_negate, } else { at = '-' + at; } - var innerOrder = Blockly.JavaScript.ORDER_UNARY_NEGATION; + var innerOrder = this.ORDER_UNARY_NEGATION; } innerOrder = Math.floor(innerOrder); order = Math.floor(order); diff --git a/generators/lua.js b/generators/lua.js index 383f1c6bc..e204d205b 100644 --- a/generators/lua.js +++ b/generators/lua.js @@ -15,6 +15,7 @@ goog.provide('Blockly.Lua'); goog.require('Blockly.Generator'); goog.require('Blockly.inputTypes'); +goog.require('Blockly.utils.object'); goog.require('Blockly.utils.string'); @@ -94,12 +95,12 @@ Blockly.Lua.init = function(workspace) { // Call Blockly.Generator's init. Object.getPrototypeOf(this).init.call(this); - if (!Blockly.Lua.nameDB_) { - Blockly.Lua.nameDB_ = new Blockly.Names(Blockly.Lua.RESERVED_WORDS_); + if (!this.nameDB_) { + this.nameDB_ = new Blockly.Names(this.RESERVED_WORDS_); } else { - Blockly.Lua.nameDB_.reset(); + this.nameDB_.reset(); } - Blockly.Lua.nameDB_.setVariableMap(workspace.getVariableMap()); + this.nameDB_.setVariableMap(workspace.getVariableMap()); this.isInitialized = true; }; @@ -110,15 +111,12 @@ Blockly.Lua.init = function(workspace) { */ Blockly.Lua.finish = function(code) { // Convert the definitions dictionary into a list. - var definitions = []; - for (var name in Blockly.Lua.definitions_) { - definitions.push(Blockly.Lua.definitions_[name]); - } + var definitions = Blockly.utils.object.values(this.definitions_); // Call Blockly.Generator's finish. code = Object.getPrototypeOf(this).finish.call(this, code); this.isInitialized = false; - Blockly.Lua.nameDB_.reset(); + this.nameDB_.reset(); return definitions.join('\n\n') + '\n\n\n' + code; }; @@ -156,7 +154,7 @@ Blockly.Lua.quote_ = function(string) { * @protected */ Blockly.Lua.multiline_quote_ = function(string) { - var lines = string.split(/\n/g).map(Blockly.Lua.quote_); + var lines = string.split(/\n/g).map(this.quote_); // Join with the following, plus a newline: // .. '\n' .. return lines.join(' .. \'\\n\' ..\n'); @@ -179,9 +177,8 @@ Blockly.Lua.scrub_ = function(block, code, opt_thisOnly) { // Collect comment for this block. var comment = block.getCommentText(); if (comment) { - comment = Blockly.utils.string.wrap(comment, - Blockly.Lua.COMMENT_WRAP - 3); - commentCode += Blockly.Lua.prefixLines(comment, '-- ') + '\n'; + comment = Blockly.utils.string.wrap(comment, this.COMMENT_WRAP - 3); + commentCode += this.prefixLines(comment, '-- ') + '\n'; } // Collect comments for all value arguments. // Don't collect comments for nested statements. @@ -189,15 +186,15 @@ Blockly.Lua.scrub_ = function(block, code, opt_thisOnly) { if (block.inputList[i].type == Blockly.inputTypes.VALUE) { var childBlock = block.inputList[i].connection.targetBlock(); if (childBlock) { - comment = Blockly.Lua.allNestedComments(childBlock); + comment = this.allNestedComments(childBlock); if (comment) { - commentCode += Blockly.Lua.prefixLines(comment, '-- '); + commentCode += this.prefixLines(comment, '-- '); } } } } } var nextBlock = block.nextConnection && block.nextConnection.targetBlock(); - var nextCode = opt_thisOnly ? '' : Blockly.Lua.blockToCode(nextBlock); + var nextCode = opt_thisOnly ? '' : this.blockToCode(nextBlock); return commentCode + code + nextCode; }; diff --git a/generators/php.js b/generators/php.js index f8209349f..3ee1b0967 100644 --- a/generators/php.js +++ b/generators/php.js @@ -14,6 +14,7 @@ goog.provide('Blockly.PHP'); goog.require('Blockly.Generator'); goog.require('Blockly.inputTypes'); +goog.require('Blockly.utils.object'); goog.require('Blockly.utils.string'); @@ -132,31 +133,31 @@ Blockly.PHP.init = function(workspace) { // Call Blockly.Generator's init. Object.getPrototypeOf(this).init.call(this); - if (!Blockly.PHP.nameDB_) { - Blockly.PHP.nameDB_ = new Blockly.Names(Blockly.PHP.RESERVED_WORDS_, '$'); + if (!this.nameDB_) { + this.nameDB_ = new Blockly.Names(this.RESERVED_WORDS_, '$'); } else { - Blockly.PHP.nameDB_.reset(); + this.nameDB_.reset(); } - Blockly.PHP.nameDB_.setVariableMap(workspace.getVariableMap()); + this.nameDB_.setVariableMap(workspace.getVariableMap()); var defvars = []; // Add developer variables (not created or named by the user). var devVarList = Blockly.Variables.allDeveloperVariables(workspace); for (var i = 0; i < devVarList.length; i++) { - defvars.push(Blockly.PHP.nameDB_.getName(devVarList[i], + defvars.push(this.nameDB_.getName(devVarList[i], Blockly.Names.DEVELOPER_VARIABLE_TYPE) + ';'); } // Add user variables, but only ones that are being used. var variables = Blockly.Variables.allUsedVarModels(workspace); - for (var i = 0, variable; variable = variables[i]; i++) { - defvars.push(Blockly.PHP.nameDB_.getName(variable.getId(), + for (var i = 0, variable; (variable = variables[i]); i++) { + defvars.push(this.nameDB_.getName(variable.getId(), Blockly.VARIABLE_CATEGORY_NAME) + ';'); } // Declare all of the variables. - Blockly.PHP.definitions_['variables'] = defvars.join('\n'); + this.definitions_['variables'] = defvars.join('\n'); this.isInitialized = true; }; @@ -167,15 +168,12 @@ Blockly.PHP.init = function(workspace) { */ Blockly.PHP.finish = function(code) { // Convert the definitions dictionary into a list. - var definitions = []; - for (var name in Blockly.PHP.definitions_) { - definitions.push(Blockly.PHP.definitions_[name]); - } + var definitions = Blockly.utils.object.values(this.definitions_); // Call Blockly.Generator's finish. code = Object.getPrototypeOf(this).finish.call(this, code); this.isInitialized = false; - Blockly.PHP.nameDB_.reset(); + this.nameDB_.reset(); return definitions.join('\n\n') + '\n\n\n' + code; }; @@ -211,7 +209,7 @@ Blockly.PHP.quote_ = function(string) { * @protected */ Blockly.PHP.multiline_quote_ = function (string) { - var lines = string.split(/\n/g).map(Blockly.PHP.quote_); + var lines = string.split(/\n/g).map(this.quote_); // Join with the following, plus a newline: // . "\n" . // Newline escaping only works in double-quoted strings. @@ -235,9 +233,8 @@ Blockly.PHP.scrub_ = function(block, code, opt_thisOnly) { // Collect comment for this block. var comment = block.getCommentText(); if (comment) { - comment = Blockly.utils.string.wrap(comment, - Blockly.PHP.COMMENT_WRAP - 3); - commentCode += Blockly.PHP.prefixLines(comment, '// ') + '\n'; + comment = Blockly.utils.string.wrap(comment, this.COMMENT_WRAP - 3); + commentCode += this.prefixLines(comment, '// ') + '\n'; } // Collect comments for all value arguments. // Don't collect comments for nested statements. @@ -245,16 +242,16 @@ Blockly.PHP.scrub_ = function(block, code, opt_thisOnly) { if (block.inputList[i].type == Blockly.inputTypes.VALUE) { var childBlock = block.inputList[i].connection.targetBlock(); if (childBlock) { - comment = Blockly.PHP.allNestedComments(childBlock); + comment = this.allNestedComments(childBlock); if (comment) { - commentCode += Blockly.PHP.prefixLines(comment, '// '); + commentCode += this.prefixLines(comment, '// '); } } } } } var nextBlock = block.nextConnection && block.nextConnection.targetBlock(); - var nextCode = opt_thisOnly ? '' : Blockly.PHP.blockToCode(nextBlock); + var nextCode = opt_thisOnly ? '' : this.blockToCode(nextBlock); return commentCode + code + nextCode; }; @@ -270,22 +267,22 @@ Blockly.PHP.scrub_ = function(block, code, opt_thisOnly) { Blockly.PHP.getAdjusted = function(block, atId, opt_delta, opt_negate, opt_order) { var delta = opt_delta || 0; - var order = opt_order || Blockly.PHP.ORDER_NONE; + var order = opt_order || this.ORDER_NONE; if (block.workspace.options.oneBasedIndex) { delta--; } var defaultAtIndex = block.workspace.options.oneBasedIndex ? '1' : '0'; if (delta > 0) { - var at = Blockly.PHP.valueToCode(block, atId, - Blockly.PHP.ORDER_ADDITION) || defaultAtIndex; + var at = this.valueToCode(block, atId, + this.ORDER_ADDITION) || defaultAtIndex; } else if (delta < 0) { - var at = Blockly.PHP.valueToCode(block, atId, - Blockly.PHP.ORDER_SUBTRACTION) || defaultAtIndex; + var at = this.valueToCode(block, atId, + this.ORDER_SUBTRACTION) || defaultAtIndex; } else if (opt_negate) { - var at = Blockly.PHP.valueToCode(block, atId, - Blockly.PHP.ORDER_UNARY_NEGATION) || defaultAtIndex; + var at = this.valueToCode(block, atId, + this.ORDER_UNARY_NEGATION) || defaultAtIndex; } else { - var at = Blockly.PHP.valueToCode(block, atId, order) || + var at = this.valueToCode(block, atId, order) || defaultAtIndex; } @@ -299,10 +296,10 @@ Blockly.PHP.getAdjusted = function(block, atId, opt_delta, opt_negate, // If the index is dynamic, adjust it in code. if (delta > 0) { at = at + ' + ' + delta; - var innerOrder = Blockly.PHP.ORDER_ADDITION; + var innerOrder = this.ORDER_ADDITION; } else if (delta < 0) { at = at + ' - ' + -delta; - var innerOrder = Blockly.PHP.ORDER_SUBTRACTION; + var innerOrder = this.ORDER_SUBTRACTION; } if (opt_negate) { if (delta) { @@ -310,7 +307,7 @@ Blockly.PHP.getAdjusted = function(block, atId, opt_delta, opt_negate, } else { at = '-' + at; } - var innerOrder = Blockly.PHP.ORDER_UNARY_NEGATION; + var innerOrder = this.ORDER_UNARY_NEGATION; } innerOrder = Math.floor(innerOrder); order = Math.floor(order); diff --git a/generators/python.js b/generators/python.js index 764df8b0b..9b22c5e4d 100644 --- a/generators/python.js +++ b/generators/python.js @@ -144,37 +144,37 @@ Blockly.Python.init = function(workspace) { /** * Empty loops or conditionals are not allowed in Python. */ - Blockly.Python.PASS = this.INDENT + 'pass\n'; + this.PASS = this.INDENT + 'pass\n'; - if (!Blockly.Python.nameDB_) { - Blockly.Python.nameDB_ = new Blockly.Names(Blockly.Python.RESERVED_WORDS_); + if (!this.nameDB_) { + this.nameDB_ = new Blockly.Names(this.RESERVED_WORDS_); } else { - Blockly.Python.nameDB_.reset(); + this.nameDB_.reset(); } - Blockly.Python.nameDB_.setVariableMap(workspace.getVariableMap()); + this.nameDB_.setVariableMap(workspace.getVariableMap()); var defvars = []; // Add developer variables (not created or named by the user). var devVarList = Blockly.Variables.allDeveloperVariables(workspace); for (var i = 0; i < devVarList.length; i++) { - defvars.push(Blockly.Python.nameDB_.getName(devVarList[i], + defvars.push(this.nameDB_.getName(devVarList[i], Blockly.Names.DEVELOPER_VARIABLE_TYPE) + ' = None'); } // Add user variables, but only ones that are being used. var variables = Blockly.Variables.allUsedVarModels(workspace); for (var i = 0; i < variables.length; i++) { - defvars.push(Blockly.Python.nameDB_.getName(variables[i].getId(), + defvars.push(this.nameDB_.getName(variables[i].getId(), Blockly.VARIABLE_CATEGORY_NAME) + ' = None'); } - Blockly.Python.definitions_['variables'] = defvars.join('\n'); + this.definitions_['variables'] = defvars.join('\n'); this.isInitialized = true; }; /** - * Prepend the generated code with the variable definitions. + * Prepend the generated code with import statements and variable definitions. * @param {string} code Generated code. * @return {string} Completed code. */ @@ -182,8 +182,8 @@ Blockly.Python.finish = function(code) { // Convert the definitions dictionary into a list. var imports = []; var definitions = []; - for (var name in Blockly.Python.definitions_) { - var def = Blockly.Python.definitions_[name]; + for (var name in this.definitions_) { + var def = this.definitions_[name]; if (def.match(/^(from\s+\S+\s+)?import\s+\S+/)) { imports.push(def); } else { @@ -194,7 +194,7 @@ Blockly.Python.finish = function(code) { code = Object.getPrototypeOf(this).finish.call(this, code); this.isInitialized = false; - Blockly.Python.nameDB_.reset(); + this.nameDB_.reset(); var allDefs = imports.join('\n') + '\n\n' + definitions.join('\n\n'); return allDefs.replace(/\n\n+/g, '\n\n').replace(/\n*$/, '\n\n\n') + code; }; @@ -240,7 +240,7 @@ Blockly.Python.quote_ = function(string) { * @protected */ Blockly.Python.multiline_quote_ = function(string) { - var lines = string.split(/\n/g).map(Blockly.Python.quote_); + var lines = string.split(/\n/g).map(this.quote_); // Join with the following, plus a newline: // + '\n' + return lines.join(' + \'\\n\' + \n'); @@ -263,9 +263,8 @@ Blockly.Python.scrub_ = function(block, code, opt_thisOnly) { // Collect comment for this block. var comment = block.getCommentText(); if (comment) { - comment = Blockly.utils.string.wrap(comment, - Blockly.Python.COMMENT_WRAP - 3); - commentCode += Blockly.Python.prefixLines(comment + '\n', '# '); + comment = Blockly.utils.string.wrap(comment, this.COMMENT_WRAP - 3); + commentCode += this.prefixLines(comment + '\n', '# '); } // Collect comments for all value arguments. // Don't collect comments for nested statements. @@ -273,16 +272,16 @@ Blockly.Python.scrub_ = function(block, code, opt_thisOnly) { if (block.inputList[i].type == Blockly.inputTypes.VALUE) { var childBlock = block.inputList[i].connection.targetBlock(); if (childBlock) { - comment = Blockly.Python.allNestedComments(childBlock); + comment = this.allNestedComments(childBlock); if (comment) { - commentCode += Blockly.Python.prefixLines(comment, '# '); + commentCode += this.prefixLines(comment, '# '); } } } } } var nextBlock = block.nextConnection && block.nextConnection.targetBlock(); - var nextCode = opt_thisOnly ? '' : Blockly.Python.blockToCode(nextBlock); + var nextCode = opt_thisOnly ? '' : this.blockToCode(nextBlock); return commentCode + code + nextCode; }; @@ -301,9 +300,8 @@ Blockly.Python.getAdjustedInt = function(block, atId, opt_delta, opt_negate) { delta--; } var defaultAtIndex = block.workspace.options.oneBasedIndex ? '1' : '0'; - var atOrder = delta ? Blockly.Python.ORDER_ADDITIVE : - Blockly.Python.ORDER_NONE; - var at = Blockly.Python.valueToCode(block, atId, atOrder) || defaultAtIndex; + var atOrder = delta ? this.ORDER_ADDITIVE : this.ORDER_NONE; + var at = this.valueToCode(block, atId, atOrder) || defaultAtIndex; if (Blockly.isNumber(at)) { // If the index is a naked number, adjust it right now.