app/assets/htmls/gs-element-blockly.html in gobstones-blockly-0.28.1 vs app/assets/htmls/gs-element-blockly.html in gobstones-blockly-0.29.0
- old
+ new
@@ -3312,11 +3312,11 @@
};</script>
<script>var PLUS = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAQAAAD2e2DtAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAHdElNRQfhDAUCCjFLV0NqAAAC60lEQVR42u3dQW7aQABA0Wl7MMjJICeDnIwuqm4qVQrYjMH/Pa/jsfFnTJDwjAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMBUP7Y+gClOY4zznX9zHmN8bn3gLHcYtwXbYevDZ5nLost/G7dx2foUeNzyyy+BN7Zs8ncjeHvrvP/NAW9qvff/rueAn1sfwNMcX3hvL2S/3wPcVt7fTl+p/c4AfIsA4gQQJ4A4AcQJIE4AcQKIE0CcAOIEECeAOAHECSBOAHECiBNAnADiBBAngDgBxAkgTgBxAogTQJwA4gQQJ4A4AcQJIE4AcQKIE0CcAOIEECeAOAHECSBOAHECiBNAnADiBBAngDgBxAkgTgBxAogTQJwA4mYHcBinVRdz+v+2tjlHfdrv8lRjHFZcyG3P22VmBPOWQrrsd+WtJ7iOjzkDzQrA5b/XpATmBHAY1ynj7MtxfD1/kDkBrP+RrGHC1ZnxX8Bpwhj7NOGV8z1A3IxbgBvA455+fcwAcQKIE0CcAOIEECeAOAHECSBOAHECiBNAnADiBBAngDgBxAkgTgBxAogTQJwA4gQQJ4A4AcT9mjLKcevTfFPn5/860AwQ58ehr2wnPw51C3jMccYgcwL48nyAu11nPB3AI2Je1bRHxMz7EPgxjuaBb7mO46zLP3MG+OMwjuM8ecx3cp419f81O4B51v7PY6evlO8B4gQQJ4A4AcQJIE4AcQKIE0CcAOIEECeAOAHECSBOAHECiBNAnADiBBAngDgBxAkgTgBxAogTQJwA4gQQJ4A4AcQJIE4AcQKIE0CcAOIEECeAOAHECSBOAHECiBNAnADiBBAngDgBxAkgTgBxAogTQJwA4gQQN2fp2G0cV9zXhEVct7HfGeD6wntjisu4rbRdtj4VHnFYLYDD1qfCY9aZA7z/39jyBFz+N7fsRrD7yX+n62H+4zTG3QvWnscYn1sfOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALvzG8Ijm7EmMQYoAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE3LTEyLTA1VDAyOjEwOjQ5LTA1OjAwJa2zowAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNy0xMi0wNVQwMjoxMDo0OS0wNTowMFTwCx8AAAAASUVORK5CYII=";
var MINUS = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAQAAAD2e2DtAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAHdElNRQfhDAUCCi+xWH4JAAABcUlEQVR42u3c7ZGCMBSG0etuYcTKls7AyrSEVWd4+bjnUECMeSbhD6kCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIBzu4XHm2rUvPekD2yutR57/4itTLXU0/Pvs9SUW5TcDrDUyE3r9Na6ZwZKBWD5PxVKIBPAVGtknGsZibeBTADPyCjXE1idn8A0/gJjXFPgn0sEwIEljgAHwPc2Xx87QHMCaE4AzQmgOQE0J4DmBNCcAJoTQHMCaE4AzQmgOQE0J4DmBNCcAJoTQHMCaE4AzQmgOQE0J4DmBNDcb2SUsfc0T2re/utAO0BzPg49sot8HOoI+M5IDJIJ4OF+gI+F7gpyRcwxxa6Iyb0E3mvYB96y1kgtv2vijubS18QBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAWXq7xrTQhKAi3AAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE3LTEyLTA1VDAyOjEwOjQ3LTA1OjAwdZLI/gAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNy0xMi0wNVQwMjoxMDo0Ny0wNTowMATPcEIAAAAASUVORK5CYII=";
var HAND = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QAAKqNIzIAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfiBAUBKBeKSgeBAAABTElEQVQoz22QzyvDcRjHX5/vvrMyStI2uZgftdVCSpJCyW1y00oUF+Xg4OIkx5VyUyJOsgv/gnJw4YCSSFMyB5pGbLJ99/k8LltreB2f9+v50eOigoc5FvGTJF8pugCwaKaNaE98uf9zMBXwjtNpbvmuaH2B0+HXuuyMEbOlQ4U1M5ZVcYbowg02YfZW5cnE9JIROdI7jsiOacoMPLZdEYPR1ouQkxCRG+feESlIXkQOzLR+NhvCpc3UbPcHAoRsADcAQ0Twq0ZosQgEVY0SqvGpkAUCxkIUYRP4bZRRNi9pvaD+TwXyFseHuYzy/Kt8CWfQ5Ems6C/5y7uZyDEH0Nt8vq0dUx0XzaapPyIIoIi23+47+SrlTvrTjLhKy2wmO95OqiacS+QBH9gAFDlOZnYbrimWOixSZCwUlK+vZd7bXiPldyi0yqX1OtkfCBS/9XAtDKAAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTgtMDQtMDVUMDQ6NDQ6NDItMDM6MDD+uUN1AAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE4LTA0LTA1VDA0OjQwOjIzLTAzOjAw5hdZgAAAAABJRU5ErkJggg==";
-window.initProcedsBlockly = function(customStatementType) {
+window.initProcedsBlockly = function(customStatementType, initialize = () => {}) {
Blockly.Msg.PROCEDURES_DEFNORETURN_COMMENT = 'Describe el procedimiento...';
Blockly.Msg.PROCEDURES_DEFNORETURN_PROCEDURE = "Hacer algo";
Blockly.Msg.PROCEDURES_DEFNORETURN_TITLE = "Definir";
Blockly.Msg.PROCEDURES_DEFNORETURN_NOPARAMS = "";
Blockly.Msg.PROCEDURES_DEFRETURN_NOPARAMS = "";
@@ -3534,11 +3534,21 @@
addParameter(this, i, name);
}.bind(this));
};
}
- var makeProcedureInit = function(withReturn, withStatements = true, withParameters = false, defaultName, title, comment, tooltip, helpUrl) {
+ var makeProcedureInit = function(
+ withReturn,
+ withStatements = true,
+ withParameters = false,
+ defaultName,
+ title,
+ comment,
+ tooltip,
+ helpUrl,
+ returnMsg = Blockly.Msg.PROCEDURES_DEFRETURN_RETURN
+ ) {
return function() {
var defaultLegalName = Blockly.Procedures.findLegalName(defaultName, this);
var nameField = new Blockly.FieldTextInput(defaultLegalName, Blockly.Procedures.rename);
nameField.setSpellcheck(false);
@@ -3562,11 +3572,11 @@
input.appendField(addParameterButton);
if (withReturn)
this.appendValueInput('RETURN')
.setAlign(Blockly.ALIGN_RIGHT)
- .appendField(Blockly.Msg.PROCEDURES_DEFRETURN_RETURN);
+ .appendField(returnMsg);
// if (withParametersMutator)
// this.setMutator(new Blockly.Mutator(['procedures_mutatorarg']));
if ((this.workspace.options.comments ||
@@ -3864,11 +3874,21 @@
onchange: Blockly.Blocks['procedures_callreturn'].onchange,
customContextMenu: Blockly.Blocks['procedures_callreturn'].customContextMenu,
defType_: 'procedures_defreturnsimple'
};
- // -------------------------------------------------------------------
+ // ---------------------------------------------------------------
+ // [!] Calling `initialize` to support another types of procedures
+ // ---------------------------------------------------------------
+ initialize(
+ makeProcedureInit,
+ makeUpdateParams,
+ makeProcedureDomToMutation,
+ makeProcedureCustomMenu
+ );
+
+ // -------------------------------------------------------------------
// [!] Adding two flyoutCategories: PROCEDURE_CALLS and FUNCTION_CALLS
// -------------------------------------------------------------------
Blockly.Procedures.procedureCallFlyoutCategory = function(workspace) {
var xmlList = [];
@@ -4033,13 +4053,126 @@
this.workspace_.addChangeListener(this.reflowWrapper_);
};
}
</script>
- <script>initProcedsBlockly("Statement");</script>
<script>/* global Blockly */
+// Initialize proceds-blockly creating new custom functions
+initProcedsBlockly("Statement", (makeProcedureInit, makeUpdateParams, makeProcedureDomToMutation, makeProcedureCustomMenu) => {
+ Blockly.Blocks['DefinicionDeFuncionDeclarativa'] = {
+ init: makeProcedureInit(
+ true, true, true,
+ "algo",
+ "Definir que",
+ Blockly.Msg.PROCEDURES_DEFRETURN_COMMENT,
+ Blockly.Msg.PROCEDURES_DEFRETURN_TOOLTIP,
+ Blockly.Msg.PROCEDURES_DEFRETURN_HELPURL,
+ "es igual a"
+ ),
+ setStatements_: Blockly.Blocks['procedures_defreturn'].setStatements_,
+ updateParams_: makeUpdateParams(),
+ mutationToDom: Blockly.Blocks['procedures_defreturn'].mutationToDom,
+ domToMutation: makeProcedureDomToMutation(),
+ decompose: Blockly.Blocks['procedures_defreturn'].decompose,
+ compose: Blockly.Blocks['procedures_defreturn'].compose,
+ getProcedureDef: Blockly.Blocks['procedures_defreturn'].getProcedureDef,
+ getVars: Blockly.Blocks['procedures_defreturn'].getVars,
+ renameVar: Blockly.Blocks['procedures_defreturn'].renameVar,
+ customContextMenu: makeProcedureCustomMenu(true),
+ callType_: 'procedures_callreturndeclarative'
+ };
+
+ Blockly.Blocks['procedures_callreturndeclarative'] = {
+ init: Blockly.Blocks['procedures_callreturn'].init,
+ getProcedureCall: Blockly.Blocks['procedures_callreturn'].getProcedureCall,
+ renameProcedure: Blockly.Blocks['procedures_callreturn'].renameProcedure,
+ setProcedureParameters_: Blockly.Blocks['procedures_callreturn'].setProcedureParameters_,
+ updateShape_: Blockly.Blocks['procedures_callreturn'].updateShape_,
+ mutationToDom: Blockly.Blocks['procedures_callreturn'].mutationToDom,
+ domToMutation: Blockly.Blocks['procedures_callreturn'].domToMutation,
+ renameVar: Blockly.Blocks['procedures_callreturn'].renameVar,
+ onchange: Blockly.Blocks['procedures_callreturn'].onchange,
+ customContextMenu: Blockly.Blocks['procedures_callreturn'].customContextMenu,
+ defType_: 'DefinicionDeFuncionDeclarativa'
+ };
+
+ Blockly.Blocks['DefinicionDeFuncionSimpleConParametrosDeclarativa'] = {
+ init: makeProcedureInit(
+ true, false, true,
+ "algo",
+ "Definir que",
+ Blockly.Msg.PROCEDURES_DEFRETURN_COMMENT,
+ Blockly.Msg.PROCEDURES_DEFRETURN_TOOLTIP,
+ Blockly.Msg.PROCEDURES_DEFRETURN_HELPURL,
+ "es igual a"
+ ),
+ setStatements_: Blockly.Blocks['procedures_defreturn'].setStatements_,
+ updateParams_: makeUpdateParams(),
+ mutationToDom: Blockly.Blocks['procedures_defreturn'].mutationToDom,
+ domToMutation: makeProcedureDomToMutation(),
+ decompose: Blockly.Blocks['procedures_defreturn'].decompose,
+ compose: Blockly.Blocks['procedures_defreturn'].compose,
+ getProcedureDef: Blockly.Blocks['procedures_defreturn'].getProcedureDef,
+ getVars: Blockly.Blocks['procedures_defreturn'].getVars,
+ renameVar: Blockly.Blocks['procedures_defreturn'].renameVar,
+ customContextMenu: makeProcedureCustomMenu(true),
+ callType_: 'procedures_callreturndeclarativesimplewithparams'
+ };
+
+ Blockly.Blocks['procedures_callreturndeclarativesimplewithparams'] = {
+ init: Blockly.Blocks['procedures_callreturn'].init,
+ getProcedureCall: Blockly.Blocks['procedures_callreturn'].getProcedureCall,
+ renameProcedure: Blockly.Blocks['procedures_callreturn'].renameProcedure,
+ setProcedureParameters_: Blockly.Blocks['procedures_callreturn'].setProcedureParameters_,
+ updateShape_: Blockly.Blocks['procedures_callreturn'].updateShape_,
+ mutationToDom: Blockly.Blocks['procedures_callreturn'].mutationToDom,
+ domToMutation: Blockly.Blocks['procedures_callreturn'].domToMutation,
+ renameVar: Blockly.Blocks['procedures_callreturn'].renameVar,
+ onchange: Blockly.Blocks['procedures_callreturn'].onchange,
+ customContextMenu: Blockly.Blocks['procedures_callreturn'].customContextMenu,
+ defType_: 'DefinicionDeFuncionSimpleConParametrosDeclarativa'
+ };
+
+ Blockly.Blocks['DefinicionDeFuncionSimpleDeclarativa'] = {
+ init: makeProcedureInit(
+ true, false, false,
+ "algo",
+ "Definir que",
+ Blockly.Msg.PROCEDURES_DEFRETURN_COMMENT,
+ Blockly.Msg.PROCEDURES_DEFRETURN_TOOLTIP,
+ Blockly.Msg.PROCEDURES_DEFRETURN_HELPURL,
+ "es igual a"
+ ),
+ setStatements_: Blockly.Blocks['procedures_defreturn'].setStatements_,
+ updateParams_: makeUpdateParams(),
+ mutationToDom: Blockly.Blocks['procedures_defreturn'].mutationToDom,
+ domToMutation: makeProcedureDomToMutation(),
+ decompose: Blockly.Blocks['procedures_defreturn'].decompose,
+ compose: Blockly.Blocks['procedures_defreturn'].compose,
+ getProcedureDef: Blockly.Blocks['procedures_defreturn'].getProcedureDef,
+ getVars: Blockly.Blocks['procedures_defreturn'].getVars,
+ renameVar: Blockly.Blocks['procedures_defreturn'].renameVar,
+ customContextMenu: makeProcedureCustomMenu(false),
+ callType_: 'procedures_callreturndeclarativesimple'
+ };
+
+ Blockly.Blocks['procedures_callreturndeclarativesimple'] = {
+ init: Blockly.Blocks['procedures_callreturn'].init,
+ getProcedureCall: Blockly.Blocks['procedures_callreturn'].getProcedureCall,
+ renameProcedure: Blockly.Blocks['procedures_callreturn'].renameProcedure,
+ setProcedureParameters_: Blockly.Blocks['procedures_callreturn'].setProcedureParameters_,
+ updateShape_: Blockly.Blocks['procedures_callreturn'].updateShape_,
+ mutationToDom: Blockly.Blocks['procedures_callreturn'].mutationToDom,
+ domToMutation: Blockly.Blocks['procedures_callreturn'].domToMutation,
+ renameVar: Blockly.Blocks['procedures_callreturn'].renameVar,
+ onchange: Blockly.Blocks['procedures_callreturn'].onchange,
+ customContextMenu: Blockly.Blocks['procedures_callreturn'].customContextMenu,
+ defType_: 'DefinicionDeFuncionSimpleDeclarativa'
+ };
+});
+
Blockly.CUSTOM_COLORS = {"globalHsvSaturation":0.45,"globalHsvValue":0.65,"primitiveCommand":"#1d3c99","assignation":"#051d66","controlStructure":"#0f2b80","literalExpression":"#1d992c","primitiveExpression":"#1d992c","operator":"#0f801c","program":"#8d1bb3","interactiveProgram":"#6e158c","interactiveBinding":"#a11fcc","procedure":"#935ba6","function":"#745380","primitiveProcedure":"#2e4fb3","primitiveFunction":"#2eb33e","procedure_call":"#355bcc","function_call":"#35cc47","variable":"#056610","parameter":"#056610","complete":"#ff0000","H":{"commands":225,"expressions":127,"definitions":285},"S":{"assignation":95,"variable":95,"parameter":95,"primitiveCommand":81,"literalExpression":81,"primitiveExpression":81,"controlStructure":88,"operator":88,"procedure_call":74,"function_call":74,"primitiveProcedure":74,"primitiveFunction":74,"program":85,"interactiveProgram":85,"interactiveBinding":85,"procedure":45,"function":35,"complete":99},"V":{"assignation":40,"variable":40,"parameter":40,"primitiveCommand":60,"literalExpression":60,"primitiveExpression":60,"controlStructure":50,"operator":50,"procedure_call":80,"function_call":80,"primitiveProcedure":70,"primitiveFunction":70,"program":70,"interactiveProgram":55,"interactiveBinding":80,"procedure":65,"function":50,"complete":99}};
Blockly.AVAILABLE_ICONS = ["bool-false.svg","bool-true.svg","clean.png","color-azul.svg","color-negro.svg","color-rojo.svg","color-verde.svg","direccion-este.svg","direccion-norte.svg","direccion-oeste.svg","direccion-sur.svg","hand.png","minus.png","plus.png"];
const EMPTY_GIF = "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==";
const getOptions = (block) => {
@@ -5896,10 +6029,13 @@
};
Blockly.GobstonesLanguage.procedures_defnoreturnnoparams = Blockly.GobstonesLanguage.procedures_defnoreturn;
Blockly.GobstonesLanguage.procedures_defreturnsimplewithparams = Blockly.GobstonesLanguage.procedures_defreturn;
Blockly.GobstonesLanguage.procedures_defreturnsimple = Blockly.GobstonesLanguage.procedures_defreturn;
+Blockly.GobstonesLanguage.DefinicionDeFuncionDeclarativa = Blockly.GobstonesLanguage.procedures_defreturn;
+Blockly.GobstonesLanguage.DefinicionDeFuncionSimpleConParametrosDeclarativa = Blockly.GobstonesLanguage.procedures_defreturn;
+Blockly.GobstonesLanguage.DefinicionDeFuncionSimpleDeclarativa = Blockly.GobstonesLanguage.procedures_defreturn;
var procedureCall = function(block, capitalizeFirst, newLine) {
var procName = formatCallName(block.getFieldValue('NAME'),capitalizeFirst);
var args = [];
for (var i = 0; i < block.arguments_.length; i++) {
@@ -5918,9 +6054,12 @@
};
Blockly.GobstonesLanguage.procedures_callnoreturnnoparams = Blockly.GobstonesLanguage.procedures_callnoreturn;
Blockly.GobstonesLanguage.procedures_callreturnsimplewithparams = Blockly.GobstonesLanguage.procedures_callreturn;
Blockly.GobstonesLanguage.procedures_callreturnsimple = Blockly.GobstonesLanguage.procedures_callreturn;
+Blockly.GobstonesLanguage.procedures_callreturndeclarative = Blockly.GobstonesLanguage.procedures_callreturn;
+Blockly.GobstonesLanguage.procedures_callreturndeclarativesimplewithparams = Blockly.GobstonesLanguage.procedures_callreturn;
+Blockly.GobstonesLanguage.procedures_callreturndeclarativesimple = Blockly.GobstonesLanguage.procedures_callreturn;
Blockly.GobstonesLanguage.variables_get = function (block) {
var code = formatCallName(block.getFieldValue('VAR'),false,Blockly.VARIABLE_CATEGORY_NAME);
return [code, Blockly.GobstonesLanguage.ORDER_ATOMIC];
};
\ No newline at end of file