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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2df8843605a77958cbbbc8363ab494219698cb9b1a98210fd2f2bf1a0d257811
4
- data.tar.gz: 7dc56f808fc135e8dc0917fea99c4be2a6f8ea80620b4d36a9ddb3753da5b632
3
+ metadata.gz: d419151d788c79159a33541aaabad83c5ba6dac3983ec745b81bab7077c9210d
4
+ data.tar.gz: 707a529e4d4d693c090c804b8ea70261346b6014e58b37505184452f1b6dec96
5
5
  SHA512:
6
- metadata.gz: bf3e0ae742217b6572f3ac7908977b80dccef29b4ec8222d4e8d3897351b766de195074fc8a2b5ff6a426753ab05d5fd9dacf7f4a6ba3de66c1ec85ed963ddd8
7
- data.tar.gz: e313b428e16d901ff92cd09a436598e99caed19cfe1ae5116f06adc88823ad3a8a5b1aa64b804a333546cc89c66067be5a5b337c5ae8237727ff19ed3c9d8bac
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 Blockly.createBlockSvg(this.workspace, 'variables_get', b => {
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) || '()') +
@@ -1,5 +1,5 @@
1
1
  module Gobstones
2
2
  module Blockly
3
- VERSION = "0.23.0"
3
+ VERSION = "0.24.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gobstones-blockly
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.23.0
4
+ version: 0.24.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rodrigo Alfonso