Merge pull request #109 from sensebox/fix/rename-variableDB

rename variableDB to nameDB
This commit is contained in:
Mario Pesch 2021-09-17 12:46:30 +02:00 committed by GitHub
commit 5ad1fcd526
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 178 additions and 165 deletions

View File

@ -121,21 +121,21 @@ Blockly["Arduino"].init = function (workspace) {
Blockly["Arduino"].variablesInitCode_ = ""; Blockly["Arduino"].variablesInitCode_ = "";
if (!Blockly["Arduino"].variableDB_) { if (!Blockly["Arduino"].nameDB_) {
Blockly["Arduino"].variableDB_ = new Blockly.Names( Blockly["Arduino"].nameDB_ = new Blockly.Names(
Blockly["Arduino"].RESERVED_WORDS_ Blockly["Arduino"].RESERVED_WORDS_
); );
} else { } else {
Blockly["Arduino"].variableDB_.reset(); Blockly["Arduino"].nameDB_.reset();
} }
Blockly["Arduino"].variableDB_.setVariableMap(workspace.getVariableMap()); Blockly["Arduino"].nameDB_.setVariableMap(workspace.getVariableMap());
// We don't have developer variables for now // We don't have developer variables for now
// // Add developer variables (not created or named by the user). // // Add developer variables (not created or named by the user).
// var devVarList = Blockly.Variables.allDeveloperVariables(workspace); // var devVarList = Blockly.Variables.allDeveloperVariables(workspace);
// for (var i = 0; i < devVarList.length; i++) { // for (var i = 0; i < devVarList.length; i++) {
// defvars.push(Blockly['Arduino'].variableDB_.getName(devVarList[i], // defvars.push(Blockly['Arduino'].nameDB_.getName(devVarList[i],
// Blockly.Names.DEVELOPER_VARIABLE_TYPE)); // Blockly.Names.DEVELOPER_VARIABLE_TYPE));
// } // }
@ -145,7 +145,7 @@ Blockly["Arduino"].init = function (workspace) {
for (i = 0; i < doubleVariables.length; i += 1) { for (i = 0; i < doubleVariables.length; i += 1) {
variableCode += variableCode +=
"double " + "double " +
Blockly["Arduino"].variableDB_.getName( Blockly["Arduino"].nameDB_.getName(
doubleVariables[i].getId(), doubleVariables[i].getId(),
Blockly.Variables.NAME_TYPE Blockly.Variables.NAME_TYPE
) + ) +
@ -156,7 +156,7 @@ Blockly["Arduino"].init = function (workspace) {
for (i = 0; i < stringVariables.length; i += 1) { for (i = 0; i < stringVariables.length; i += 1) {
variableCode += variableCode +=
"String " + "String " +
Blockly["Arduino"].variableDB_.getName( Blockly["Arduino"].nameDB_.getName(
stringVariables[i].getId(), stringVariables[i].getId(),
Blockly.Variables.NAME_TYPE Blockly.Variables.NAME_TYPE
) + ) +
@ -167,7 +167,7 @@ Blockly["Arduino"].init = function (workspace) {
for (i = 0; i < booleanVariables.length; i += 1) { for (i = 0; i < booleanVariables.length; i += 1) {
variableCode += variableCode +=
"boolean " + "boolean " +
Blockly["Arduino"].variableDB_.getDistinctName( Blockly["Arduino"].nameDB_.getDistinctName(
booleanVariables[i].getId(), booleanVariables[i].getId(),
Blockly.Variables.NAME_TYPE Blockly.Variables.NAME_TYPE
) + ) +
@ -178,7 +178,7 @@ Blockly["Arduino"].init = function (workspace) {
for (i = 0; i < colourVariables.length; i += 1) { for (i = 0; i < colourVariables.length; i += 1) {
variableCode += variableCode +=
"RGB " + "RGB " +
Blockly["Arduino"].variableDB_.getName( Blockly["Arduino"].nameDB_.getName(
colourVariables[i].getId(), colourVariables[i].getId(),
Blockly.Variables.NAME_TYPE Blockly.Variables.NAME_TYPE
) + ) +
@ -281,7 +281,7 @@ Blockly["Arduino"].finish = function (code) {
delete Blockly["Arduino"].loopCodeOnce_; delete Blockly["Arduino"].loopCodeOnce_;
delete Blockly["Arduino"].variablesInitCode_; delete Blockly["Arduino"].variablesInitCode_;
delete Blockly["Arduino"].libraries_; delete Blockly["Arduino"].libraries_;
Blockly["Arduino"].variableDB_.reset(); Blockly["Arduino"].nameDB_.reset();
return code; return code;
}; };

View File

@ -275,7 +275,7 @@ Blockly.Arduino["math_change"] = function (block) {
"DELTA", "DELTA",
Blockly.Arduino.ORDER_ADDITIVE Blockly.Arduino.ORDER_ADDITIVE
) || "0"; ) || "0";
var varName = Blockly.Arduino.variableDB_.getName( var varName = Blockly.Arduino.nameDB_.getName(
block.getFieldValue("VAR"), block.getFieldValue("VAR"),
Blockly.Variables.NAME_TYPE Blockly.Variables.NAME_TYPE
); );

View File

@ -1,5 +1,4 @@
import * as Blockly from 'blockly/core'; import * as Blockly from "blockly/core";
/** /**
* Code generator to add code into the setup() and loop() functions. * Code generator to add code into the setup() and loop() functions.
@ -7,91 +6,92 @@ import * as Blockly from 'blockly/core';
* @param {!Blockly.Block} block Block to generate the code from. * @param {!Blockly.Block} block Block to generate the code from.
* @return {string} Completed code. * @return {string} Completed code.
*/ */
Blockly.Arduino['arduino_functions'] = function (block) { Blockly.Arduino["arduino_functions"] = function (block) {
// Edited version of Blockly.Generator.prototype.statementToCode // Edited version of Blockly.Generator.prototype.statementToCode
function statementToCodeNoTab(block, name) { function statementToCodeNoTab(block, name) {
var targetBlock = block.getInputTargetBlock(name); var targetBlock = block.getInputTargetBlock(name);
var code = Blockly.Arduino.blockToCode(targetBlock); var code = Blockly.Arduino.blockToCode(targetBlock);
if (typeof code != 'string') { if (typeof code != "string") {
throw new Error('Expecting code from statement block "' + targetBlock.type + '".'); throw new Error(
'Expecting code from statement block "' + targetBlock.type + '".'
);
} }
return code; return code;
} }
var setupBranch = Blockly.Arduino.statementToCode(block, 'SETUP_FUNC'); var setupBranch = Blockly.Arduino.statementToCode(block, "SETUP_FUNC");
// //var setupCode = Blockly.Arduino.scrub_(block, setupBranch); No comment block // //var setupCode = Blockly.Arduino.scrub_(block, setupBranch); No comment block
if (setupBranch) { if (setupBranch) {
Blockly.Arduino.setupCode_['mainsetup'] = setupBranch; Blockly.Arduino.setupCode_["mainsetup"] = setupBranch;
} }
var loopBranch = statementToCodeNoTab(block, 'LOOP_FUNC'); var loopBranch = statementToCodeNoTab(block, "LOOP_FUNC");
//var loopcode = Blockly.Arduino.scrub_(block, loopBranch); No comment block //var loopcode = Blockly.Arduino.scrub_(block, loopBranch); No comment block
return loopBranch; return loopBranch;
}; };
Blockly.Arduino['procedures_defreturn'] = function (block) { Blockly.Arduino["procedures_defreturn"] = function (block) {
// Define a procedure with a return value. // Define a procedure with a return value.
const funcName = Blockly.Arduino.variableDB_.getName( const funcName = Blockly.Arduino.nameDB_.getName(
block.getFieldValue('NAME'), block.getFieldValue("NAME"),
Blockly.Procedures.NAME_TYPE Blockly.Procedures.NAME_TYPE
); );
const branch = Blockly.Arduino.statementToCode(block, 'STACK'); const branch = Blockly.Arduino.statementToCode(block, "STACK");
const returnType = block.getFieldValue('RETURN TYPE') || 'void'; const returnType = block.getFieldValue("RETURN TYPE") || "void";
let returnValue = let returnValue =
Blockly.Arduino.valueToCode(block, 'RETURN', Blockly.Arduino.ORDER_NONE) || Blockly.Arduino.valueToCode(block, "RETURN", Blockly.Arduino.ORDER_NONE) ||
''; "";
if (returnValue) { if (returnValue) {
returnValue = Blockly.Arduino.INDENT + 'return ' + returnValue + ';\n'; returnValue = Blockly.Arduino.INDENT + "return " + returnValue + ";\n";
} }
const args = []; const args = [];
for (let i = 0; i < block.argumentVarModels_.length; i++) { for (let i = 0; i < block.argumentVarModels_.length; i++) {
args[i] = args[i] =
translateType(block.argumentVarModels_[i].type) + translateType(block.argumentVarModels_[i].type) +
' ' + " " +
block.argumentVarModels_[i].name; block.argumentVarModels_[i].name;
} }
let code = let code =
translateType(returnType) + translateType(returnType) +
' ' + " " +
funcName + funcName +
'(' + "(" +
args.join(', ') + args.join(", ") +
') {\n' + ") {\n" +
branch + branch +
returnValue + returnValue +
'}'; "}";
code = Blockly.Arduino.scrub_(block, code); code = Blockly.Arduino.scrub_(block, code);
// Add % so as not to collide with helper functions in definitions list. // Add % so as not to collide with helper functions in definitions list.
Blockly.Arduino.functionNames_['%' + funcName] = code; Blockly.Arduino.functionNames_["%" + funcName] = code;
return null; return null;
}; };
function translateType(type) { function translateType(type) {
switch (type) { switch (type) {
case "int":
case 'int': return "int";
return 'int'; case "String":
case 'String': return "String";
return 'String'; case "void":
case 'void': return "void";
return 'void'; case "boolean":
case 'boolean': return "boolean";
return 'boolean'; case "float":
case 'float': return "float";
return 'float'
default: default:
throw new Error('Invalid Parameter Type'); throw new Error("Invalid Parameter Type");
} }
} }
Blockly.Arduino['procedures_defnoreturn'] = Blockly.Arduino["procedures_defnoreturn"] =
Blockly.Arduino['procedures_defreturn']; Blockly.Arduino["procedures_defreturn"];
Blockly.Arduino['procedures_callreturn'] = function (block) { Blockly.Arduino["procedures_callreturn"] = function (block) {
// Call a procedure with a return value. // Call a procedure with a return value.
const funcName = Blockly.Arduino.variableDB_.getName( const funcName = Blockly.Arduino.nameDB_.getName(
block.getFieldValue('NAME'), block.getFieldValue("NAME"),
Blockly.Procedures.NAME_TYPE Blockly.Procedures.NAME_TYPE
); );
const args = []; const args = [];
@ -99,18 +99,18 @@ Blockly.Arduino['procedures_callreturn'] = function (block) {
args[i] = args[i] =
Blockly.Arduino.valueToCode( Blockly.Arduino.valueToCode(
block, block,
'ARG' + i, "ARG" + i,
Blockly.Arduino.ORDER_COMMA Blockly.Arduino.ORDER_COMMA
) || 'null'; ) || "null";
} }
const code = funcName + '(' + args.join(', ') + ')'; const code = funcName + "(" + args.join(", ") + ")";
return [code, Blockly.Arduino.ORDER_ATOMIC]; return [code, Blockly.Arduino.ORDER_ATOMIC];
}; };
Blockly.Arduino['procedures_callnoreturn'] = function (block) { Blockly.Arduino["procedures_callnoreturn"] = function (block) {
// Call a procedure with no return value. // Call a procedure with no return value.
const funcName = Blockly.Arduino.variableDB_.getName( const funcName = Blockly.Arduino.nameDB_.getName(
block.getFieldValue('NAME'), block.getFieldValue("NAME"),
Blockly.Procedures.NAME_TYPE Blockly.Procedures.NAME_TYPE
); );
const args = []; const args = [];
@ -118,10 +118,10 @@ Blockly.Arduino['procedures_callnoreturn'] = function (block) {
args[i] = args[i] =
Blockly.Arduino.valueToCode( Blockly.Arduino.valueToCode(
block, block,
'ARG' + i, "ARG" + i,
Blockly.Arduino.ORDER_COMMA Blockly.Arduino.ORDER_COMMA
) || 'null'; ) || "null";
} }
return funcName + '(' + args.join(', ') + ');\n'; return funcName + "(" + args.join(", ") + ");\n";
}; };

View File

@ -1,5 +1,4 @@
import * as Blockly from 'blockly/core'; import * as Blockly from "blockly/core";
/** /**
* Code generator for a literal String (X). * Code generator for a literal String (X).
@ -7,12 +6,11 @@ import * as Blockly from 'blockly/core';
* @param {!Blockly.Block} block Block to generate the code from. * @param {!Blockly.Block} block Block to generate the code from.
* @return {array} Completed code with order of operation. * @return {array} Completed code with order of operation.
*/ */
Blockly.Arduino['text'] = function (block) { Blockly.Arduino["text"] = function (block) {
var code = Blockly.Arduino.quote_(block.getFieldValue('TEXT')); var code = Blockly.Arduino.quote_(block.getFieldValue("TEXT"));
return [code, Blockly.Arduino.ORDER_ATOMIC]; return [code, Blockly.Arduino.ORDER_ATOMIC];
}; };
/** /**
* Code generator for a String concatenation (X...Y). This string can be made * Code generator for a String concatenation (X...Y). This string can be made
* up of any number of elements of any type. * up of any number of elements of any type.
@ -22,28 +20,35 @@ Blockly.Arduino['text'] = function (block) {
* @param {!Blockly.Block} block Block to generate the code from. * @param {!Blockly.Block} block Block to generate the code from.
* @return {array} Completed code with order of operation. * @return {array} Completed code with order of operation.
*/ */
Blockly.Arduino['text_join'] = function (block) { Blockly.Arduino["text_join"] = function (block) {
var code; var code;
if (block.itemCount_ === 0) { if (block.itemCount_ === 0) {
return ['""', Blockly.Arduino.ORDER_ATOMIC]; return ['""', Blockly.Arduino.ORDER_ATOMIC];
} else if (block.itemCount_ === 1) { } else if (block.itemCount_ === 1) {
var argument0 = Blockly.Arduino.valueToCode(block, 'ADD0', var argument0 =
Blockly.Arduino.ORDER_UNARY_POSTFIX) || '""'; Blockly.Arduino.valueToCode(
code = 'String(' + argument0 + ')'; block,
"ADD0",
Blockly.Arduino.ORDER_UNARY_POSTFIX
) || '""';
code = "String(" + argument0 + ")";
return [code, Blockly.Arduino.ORDER_UNARY_POSTFIX]; return [code, Blockly.Arduino.ORDER_UNARY_POSTFIX];
} else { } else {
var argument; var argument;
code = []; code = [];
for (var n = 0; n < block.itemCount_; n++) { for (var n = 0; n < block.itemCount_; n++) {
argument = Blockly.Arduino.valueToCode( argument = Blockly.Arduino.valueToCode(
block, 'ADD' + n, Blockly.Arduino.ORDER_NONE); block,
if (argument === '') { "ADD" + n,
Blockly.Arduino.ORDER_NONE
);
if (argument === "") {
code[n] = '""'; code[n] = '""';
} else { } else {
code[n] = 'String(' + argument + ')'; code[n] = "String(" + argument + ")";
} }
} }
code = code.join(' + '); code = code.join(" + ");
return [code, Blockly.Arduino.ORDER_UNARY_POSTFIX]; return [code, Blockly.Arduino.ORDER_UNARY_POSTFIX];
} }
}; };
@ -55,18 +60,23 @@ Blockly.Arduino['text_join'] = function (block) {
* @param {!Blockly.Block} block Block to generate the code from. * @param {!Blockly.Block} block Block to generate the code from.
* @return {string} Completed code. * @return {string} Completed code.
*/ */
Blockly.Arduino['text_append'] = function (block) { Blockly.Arduino["text_append"] = function (block) {
// Append to a variable in place. // Append to a variable in place.
var varName = Blockly.Arduino.variableDB_.getName( var varName = Blockly.Arduino.nameDB_.getName(
block.getFieldValue('VAR'), Blockly.Variables.NAME_TYPE); block.getFieldValue("VAR"),
var argument0 = Blockly.Arduino.valueToCode(block, 'TEXT', Blockly.Variables.NAME_TYPE
Blockly.Arduino.ORDER_UNARY_POSTFIX); );
if (argument0 === '') { var argument0 = Blockly.Arduino.valueToCode(
block,
"TEXT",
Blockly.Arduino.ORDER_UNARY_POSTFIX
);
if (argument0 === "") {
argument0 = '""'; argument0 = '""';
} else { } else {
argument0 = 'String(' + argument0 + ')'; argument0 = "String(" + argument0 + ")";
} }
return varName + ' += ' + argument0 + ';\n'; return varName + " += " + argument0 + ";\n";
}; };
/** /**
@ -76,10 +86,13 @@ Blockly.Arduino['text_append'] = function (block) {
* @param {!Blockly.Block} block Block to generate the code from. * @param {!Blockly.Block} block Block to generate the code from.
* @return {array} Completed code with order of operation. * @return {array} Completed code with order of operation.
*/ */
Blockly.Arduino['text_length'] = function (block) { Blockly.Arduino["text_length"] = function (block) {
var argument0 = Blockly.Arduino.valueToCode(block, 'VALUE', var argument0 =
Blockly.Arduino.ORDER_UNARY_POSTFIX) || '""'; Blockly.Arduino.valueToCode(
var code = 'String(' + argument0 + ').length()'; block,
"VALUE",
Blockly.Arduino.ORDER_UNARY_POSTFIX
) || '""';
var code = "String(" + argument0 + ").length()";
return [code, Blockly.Arduino.ORDER_UNARY_POSTFIX]; return [code, Blockly.Arduino.ORDER_UNARY_POSTFIX];
}; };

View File

@ -2,7 +2,7 @@ import Blockly from "blockly";
const setVariableFunction = function (defaultValue) { const setVariableFunction = function (defaultValue) {
return function (block) { return function (block) {
const variableName = Blockly["Arduino"].variableDB_.getName( const variableName = Blockly["Arduino"].nameDB_.getName(
block.getFieldValue("VAR"), block.getFieldValue("VAR"),
Blockly.Variables.NAME_TYPE Blockly.Variables.NAME_TYPE
); );
@ -48,7 +48,7 @@ const setVariableFunction = function (defaultValue) {
}; };
const getVariableFunction = function (block) { const getVariableFunction = function (block) {
const variableName = Blockly["Arduino"].variableDB_.getName( const variableName = Blockly["Arduino"].nameDB_.getName(
block.getFieldValue("VAR"), block.getFieldValue("VAR"),
Blockly.Variables.NAME_TYPE Blockly.Variables.NAME_TYPE
); );