gobstones-blockly 0.22.0 → 0.23.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 +105 -3
- data/lib/gobstones/blockly/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2df8843605a77958cbbbc8363ab494219698cb9b1a98210fd2f2bf1a0d257811
|
4
|
+
data.tar.gz: 7dc56f808fc135e8dc0917fea99c4be2a6f8ea80620b4d36a9ddb3753da5b632
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bf3e0ae742217b6572f3ac7908977b80dccef29b4ec8222d4e8d3897351b766de195074fc8a2b5ff6a426753ab05d5fd9dacf7f4a6ba3de66c1ec85ed963ddd8
|
7
|
+
data.tar.gz: e313b428e16d901ff92cd09a436598e99caed19cfe1ae5116f06adc88823ad3a8a5b1aa64b804a333546cc89c66067be5a5b337c5ae8237727ff19ed3c9d8bac
|
@@ -63,6 +63,7 @@ Example:
|
|
63
63
|
<block type="ColorSelector"></block>
|
64
64
|
<block type="DireccionSelector"></block>
|
65
65
|
<block type="BoolSelector"></block>
|
66
|
+
<block type="List"></block>
|
66
67
|
</category>
|
67
68
|
<category name="Expresiones primitivas">
|
68
69
|
<block type="hayBolitas"></block>
|
@@ -4177,7 +4178,7 @@ Blockly.Blocks.InteractiveProgram = {
|
|
4177
4178
|
_addInit() {
|
4178
4179
|
this.$init = true;
|
4179
4180
|
|
4180
|
-
const icon = "
|
4181
|
+
const icon = "minus.png";
|
4181
4182
|
var removeButton = new Blockly.FieldImage(
|
4182
4183
|
getLocalMediaUrl(this, icon),
|
4183
4184
|
getLocalMediaSize(icon),
|
@@ -4278,8 +4279,7 @@ createInteractiveBinding = (name, keys) => {
|
|
4278
4279
|
options: keys.map(it => [it.name, it.code]),
|
4279
4280
|
}
|
4280
4281
|
],
|
4281
|
-
colour: Blockly.CUSTOM_COLORS.InteractiveBinding || Blockly.CUSTOM_COLORS.interactiveBinding
|
4282
|
-
tooltip: "Escoger una entrada",
|
4282
|
+
colour: Blockly.CUSTOM_COLORS.InteractiveBinding || Blockly.CUSTOM_COLORS.interactiveBinding
|
4283
4283
|
});
|
4284
4284
|
|
4285
4285
|
this.appendStatementInput('block').setCheck(["Statement"]);
|
@@ -4849,6 +4849,95 @@ Blockly.Blocks.ColorSelector = createLiteralSelectorBlock('Color',['Rojo','Verde
|
|
4849
4849
|
Blockly.Blocks.DireccionSelector = createLiteralSelectorBlock('Direccion',['Este','Oeste','Norte','Sur']);
|
4850
4850
|
Blockly.Blocks.BoolSelector = createLiteralSelectorBlock('Bool',['True','False']);
|
4851
4851
|
|
4852
|
+
Blockly.Blocks.List = {
|
4853
|
+
init: function () {
|
4854
|
+
const type = "List";
|
4855
|
+
|
4856
|
+
this.jsonInit({
|
4857
|
+
type: type,
|
4858
|
+
message0: "[",
|
4859
|
+
args0: [],
|
4860
|
+
output: type,
|
4861
|
+
colour: Blockly.CUSTOM_COLORS.list || Blockly.CUSTOM_COLORS.literalExpression,
|
4862
|
+
inputsInline: false
|
4863
|
+
});
|
4864
|
+
|
4865
|
+
this._addAddButton();
|
4866
|
+
this.length = 0;
|
4867
|
+
},
|
4868
|
+
|
4869
|
+
mutationToDom: function() {
|
4870
|
+
var container = document.createElement('mutation');
|
4871
|
+
container.setAttribute('length', this.length);
|
4872
|
+
return container;
|
4873
|
+
},
|
4874
|
+
|
4875
|
+
domToMutation: function(xmlElement) {
|
4876
|
+
var length = parseInt(xmlElement.getAttribute('length')) || 0;
|
4877
|
+
for (let i = 0; i < length; i++) this._addElement();
|
4878
|
+
},
|
4879
|
+
|
4880
|
+
_addElement: function() {
|
4881
|
+
this.length++;
|
4882
|
+
this._removeAddButton();
|
4883
|
+
const input = this.appendValueInput('element' + this.length);
|
4884
|
+
this._addRemoveButtonFor(input);
|
4885
|
+
this._addAddButton();
|
4886
|
+
},
|
4887
|
+
|
4888
|
+
_removeElement: function(input) {
|
4889
|
+
this.removeInput(input.name);
|
4890
|
+
this.length--;
|
4891
|
+
|
4892
|
+
let id = 1;
|
4893
|
+
for (let input of this.inputList) {
|
4894
|
+
if (input.name.startsWith("element")) {
|
4895
|
+
input.name = "element" + id;
|
4896
|
+
id++;
|
4897
|
+
}
|
4898
|
+
}
|
4899
|
+
},
|
4900
|
+
|
4901
|
+
_addAddButton: function() {
|
4902
|
+
const icon = "plus.png";
|
4903
|
+
var addButton = new Blockly.FieldImage(
|
4904
|
+
getLocalMediaUrl(this, icon),
|
4905
|
+
getLocalMediaSize(icon),
|
4906
|
+
getLocalMediaSize(icon),
|
4907
|
+
"Agregar elemento",
|
4908
|
+
function() {
|
4909
|
+
this._addElement();
|
4910
|
+
}.bind(this)
|
4911
|
+
);
|
4912
|
+
const input = this.appendDummyInput();
|
4913
|
+
input.appendField(addButton);
|
4914
|
+
input.name = "addButton";
|
4915
|
+
|
4916
|
+
const closingBracket = this.appendDummyInput();
|
4917
|
+
closingBracket.appendField("]");
|
4918
|
+
closingBracket.name = "closingBracket";
|
4919
|
+
},
|
4920
|
+
|
4921
|
+
_removeAddButton: function() {
|
4922
|
+
this.removeInput("addButton")
|
4923
|
+
this.removeInput("closingBracket");
|
4924
|
+
},
|
4925
|
+
|
4926
|
+
_addRemoveButtonFor: function(input) {
|
4927
|
+
const icon = "minus.png";
|
4928
|
+
var removeButton = new Blockly.FieldImage(
|
4929
|
+
getLocalMediaUrl(this, icon),
|
4930
|
+
getLocalMediaSize(icon),
|
4931
|
+
getLocalMediaSize(icon),
|
4932
|
+
"Quitar elemento",
|
4933
|
+
function() {
|
4934
|
+
this._removeElement(input);
|
4935
|
+
}.bind(this)
|
4936
|
+
);
|
4937
|
+
input.appendField(removeButton);
|
4938
|
+
}
|
4939
|
+
};
|
4940
|
+
|
4852
4941
|
function createSingleParameterExpressionBlock(blockText,returnType, colorType = "operator"){
|
4853
4942
|
return {
|
4854
4943
|
init: function () {
|
@@ -5478,6 +5567,17 @@ Blockly.GobstonesLanguage.ColorSelector = literalSelectorBlockCodeGenerator('Col
|
|
5478
5567
|
Blockly.GobstonesLanguage.DireccionSelector = literalSelectorBlockCodeGenerator('Direccion');
|
5479
5568
|
Blockly.GobstonesLanguage.BoolSelector = literalSelectorBlockCodeGenerator('Bool');
|
5480
5569
|
|
5570
|
+
Blockly.GobstonesLanguage.List = function(block) {
|
5571
|
+
const elements = block
|
5572
|
+
.inputList
|
5573
|
+
.filter((it) => it.name.startsWith("element"))
|
5574
|
+
.map((it) => Blockly.GobstonesLanguage.valueToCode(block, it.name, Blockly.GobstonesLanguage.ORDER_NONE))
|
5575
|
+
.join(", ");
|
5576
|
+
const code = `[${elements}]`;
|
5577
|
+
|
5578
|
+
return [code, Blockly.GobstonesLanguage.ORDER_ATOMIC];
|
5579
|
+
};
|
5580
|
+
|
5481
5581
|
Blockly.GobstonesLanguage.OperadorDeComparacion = function (block) {
|
5482
5582
|
var code =
|
5483
5583
|
(Blockly.GobstonesLanguage.valueToCode(block, 'arg1', Blockly.GobstonesLanguage.ORDER_RELATIONAL) || '()') +
|
@@ -6572,6 +6672,8 @@ Blockly.ErrorInforming.CssContent = [
|
|
6572
6672
|
const oldAndOperator = `<field name="OPERATOR">&&</field>`;
|
6573
6673
|
const newAndOperator = `<field name="OPERATOR">AND</field>`;
|
6574
6674
|
|
6675
|
+
if (!this.workspaceXml) return;
|
6676
|
+
|
6575
6677
|
if (this.workspaceXml.includes(oldAndOperator)) {
|
6576
6678
|
this.workspaceXml = this.workspaceXml.replace(new RegExp(oldAndOperator, "g"), newAndOperator);
|
6577
6679
|
return true;
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gobstones-blockly
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.23.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rodrigo Alfonso
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-10-
|
11
|
+
date: 2018-10-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|