gobstones-blockly 0.23.0 → 0.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/assets/htmls/gs-element-blockly.html +65 -4
- data/lib/gobstones/blockly/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d419151d788c79159a33541aaabad83c5ba6dac3983ec745b81bab7077c9210d
|
4
|
+
data.tar.gz: 707a529e4d4d693c090c804b8ea70261346b6014e58b37505184452f1b6dec96
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9fcb41fb972763cab3349ddac30cd45a2b921dfba725343a77eeba576dfb8b74bb8a2a1f3e999de2ff4cab2d064f79984f0622ea60031a6ec8b27b1eaf7493e9
|
7
|
+
data.tar.gz: aefbddac2244fb23b4ba3598aed08b2a1925b7af4c2cedc850ef89b6b02518c47f9d555064ab35bf4f57c8a6c3e49866afbef95c5958a5e488758bcc36b16e6c
|
@@ -52,6 +52,7 @@ Example:
|
|
52
52
|
<category name="Repeticiones">
|
53
53
|
<block type="RepeticionSimple"></block>
|
54
54
|
<block type="RepeticionCondicional"></block>
|
55
|
+
<block type="ForEach"></block>
|
55
56
|
</category>
|
56
57
|
<category name="Asignación">
|
57
58
|
<block type="Asignacion"></block>
|
@@ -4066,6 +4067,15 @@ Blockly.createBlockSvg = function(workspace, name, f) {
|
|
4066
4067
|
newBlock.render();
|
4067
4068
|
};
|
4068
4069
|
|
4070
|
+
const createVariable = (workspace, name) => {
|
4071
|
+
Blockly.createBlockSvg(workspace, 'variables_get', b => {
|
4072
|
+
b.setFieldValue(name, 'VAR');
|
4073
|
+
b.moveBy(10,5);
|
4074
|
+
});
|
4075
|
+
}
|
4076
|
+
|
4077
|
+
// ---
|
4078
|
+
|
4069
4079
|
Blockly.Blocks.Program = {
|
4070
4080
|
init: function () {
|
4071
4081
|
this.jsonInit({
|
@@ -4938,6 +4948,52 @@ Blockly.Blocks.List = {
|
|
4938
4948
|
}
|
4939
4949
|
};
|
4940
4950
|
|
4951
|
+
Blockly.Blocks.ForEach = {
|
4952
|
+
init: function () {
|
4953
|
+
this.jsonInit({
|
4954
|
+
type: "Statement",
|
4955
|
+
previousStatement: "Statement",
|
4956
|
+
nextStatement: "Statement",
|
4957
|
+
message0: 'Repetir para cada %1 %2 %3',
|
4958
|
+
args0: [
|
4959
|
+
{
|
4960
|
+
"type": "field_input",
|
4961
|
+
"name": "varName",
|
4962
|
+
"text": "elemento"
|
4963
|
+
},
|
4964
|
+
{
|
4965
|
+
type: 'input_dummy'
|
4966
|
+
},
|
4967
|
+
{
|
4968
|
+
"type": "field_label",
|
4969
|
+
"text": "en"
|
4970
|
+
},
|
4971
|
+
]
|
4972
|
+
});
|
4973
|
+
|
4974
|
+
this.setColour(Blockly.CUSTOM_COLORS.ForEach || Blockly.CUSTOM_COLORS.controlStructure);
|
4975
|
+
this.appendValueInput('list');
|
4976
|
+
this.appendStatementInput('block').setCheck(["Statement"]);
|
4977
|
+
this.setInputsInline(true);
|
4978
|
+
|
4979
|
+
var self = this;
|
4980
|
+
|
4981
|
+
const handIcon = "hand.png";
|
4982
|
+
var createGetterButton = new Blockly.FieldImage(
|
4983
|
+
getLocalMediaUrl(this, handIcon),
|
4984
|
+
getLocalMediaSize(handIcon),
|
4985
|
+
getLocalMediaSize(handIcon),
|
4986
|
+
"Obtener variable",
|
4987
|
+
function() {
|
4988
|
+
var name = self.getFieldValue('varName');
|
4989
|
+
createVariable(self.workspace, name);
|
4990
|
+
}
|
4991
|
+
);
|
4992
|
+
|
4993
|
+
this.inputList[0].appendField(createGetterButton);
|
4994
|
+
}
|
4995
|
+
};
|
4996
|
+
|
4941
4997
|
function createSingleParameterExpressionBlock(blockText,returnType, colorType = "operator"){
|
4942
4998
|
return {
|
4943
4999
|
init: function () {
|
@@ -5117,10 +5173,7 @@ Blockly.Blocks.Asignacion = {
|
|
5117
5173
|
},
|
5118
5174
|
|
5119
5175
|
createVariableBlock: function(name) {
|
5120
|
-
return
|
5121
|
-
b.setFieldValue(name, 'VAR');
|
5122
|
-
b.moveBy(10,5);
|
5123
|
-
});
|
5176
|
+
return createVariable(this.workspace, name);
|
5124
5177
|
}
|
5125
5178
|
};
|
5126
5179
|
|
@@ -5578,6 +5631,14 @@ Blockly.GobstonesLanguage.List = function(block) {
|
|
5578
5631
|
return [code, Blockly.GobstonesLanguage.ORDER_ATOMIC];
|
5579
5632
|
};
|
5580
5633
|
|
5634
|
+
Blockly.GobstonesLanguage.ForEach = function (block) {
|
5635
|
+
let body = Blockly.GobstonesLanguage.statementToCode(block, 'block');
|
5636
|
+
var varName = block.getFieldValue('varName');
|
5637
|
+
var list = Blockly.GobstonesLanguage.valueToCode(block, 'list', Blockly.GobstonesLanguage.ORDER_NONE) || '';
|
5638
|
+
|
5639
|
+
return `foreach ${varName} in ${list} {\n${body}}\n`;
|
5640
|
+
};
|
5641
|
+
|
5581
5642
|
Blockly.GobstonesLanguage.OperadorDeComparacion = function (block) {
|
5582
5643
|
var code =
|
5583
5644
|
(Blockly.GobstonesLanguage.valueToCode(block, 'arg1', Blockly.GobstonesLanguage.ORDER_RELATIONAL) || '()') +
|