gobstones-blockly 0.11.1 → 0.11.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/htmls/gs-element-blockly.html +155 -61
- 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: 891585669cd266e97df6ffd8181937289f509807199bb7e934ff66912d0736fb
|
4
|
+
data.tar.gz: 8d8d8930bf62bec7c4fff979550e434899fe5384c5e10474676e230554c6dc76
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fd46da04329bf1b411e4019abcaf8f9d08b0d2a2ffdb73566b5148d03092d869219534b9abbda36cd377f447bd2cfcce2c0f8118a47d74cd9b415421850915b5
|
7
|
+
data.tar.gz: ec38226415b998814c5efa693285391078d1206d02a0a82d02fefda81eea45738dd8181a4340cdf54d9bde6e43e0dd8b8397dc3ab1458b7f56ae9a25f07673db
|
@@ -3573,7 +3573,11 @@ window.initProcedsBlockly = function(customStatementType) {
|
|
3573
3573
|
this.setCommentText(comment);
|
3574
3574
|
}
|
3575
3575
|
this.setCommentText(null);
|
3576
|
-
this.setColour(
|
3576
|
+
this.setColour((
|
3577
|
+
Blockly.CUSTOM_COLORS && (
|
3578
|
+
Blockly.CUSTOM_COLORS[this.type] ||
|
3579
|
+
Blockly.CUSTOM_COLORS[withReturn ? "function" : "procedure"]
|
3580
|
+
)) || Blockly.Blocks.procedures.HUE);
|
3577
3581
|
this.setTooltip(tooltip);
|
3578
3582
|
this.setHelpUrl(helpUrl);
|
3579
3583
|
this.arguments_ = [];
|
@@ -3581,6 +3585,26 @@ window.initProcedsBlockly = function(customStatementType) {
|
|
3581
3585
|
this.statementConnection_ = null;
|
3582
3586
|
|
3583
3587
|
// if (!withParametersMutator) this.updateParams_();
|
3588
|
+
|
3589
|
+
// [!] adding create call button
|
3590
|
+
// TODO: Hacer esto
|
3591
|
+
// var xmlMutation = goog.dom.createDom('mutation');
|
3592
|
+
// xmlMutation.setAttribute('name', name);
|
3593
|
+
// for (var i = 0; i < self.arguments_.length; i++) {
|
3594
|
+
// var xmlArg = goog.dom.createDom('arg');
|
3595
|
+
// xmlArg.setAttribute('name', self.arguments_[i]);
|
3596
|
+
// xmlMutation.appendChild(xmlArg);
|
3597
|
+
// }
|
3598
|
+
// var xmlBlock = goog.dom.createDom('block', null, xmlMutation);
|
3599
|
+
// xmlBlock.setAttribute('type', self.callType_);
|
3600
|
+
// var createCallButton = new Blockly.FieldImage(
|
3601
|
+
// WAND,
|
3602
|
+
// 16,
|
3603
|
+
// 16,
|
3604
|
+
// "",
|
3605
|
+
// Blockly.ContextMenu.callbackFactory(self, xmlBlock)
|
3606
|
+
// );
|
3607
|
+
// input.appendField(createCallButton);
|
3584
3608
|
};
|
3585
3609
|
};
|
3586
3610
|
|
@@ -3648,13 +3672,14 @@ window.initProcedsBlockly = function(customStatementType) {
|
|
3648
3672
|
};
|
3649
3673
|
};
|
3650
3674
|
|
3651
|
-
//
|
3652
|
-
// [!] Setting custom statement type to procedure calls
|
3653
|
-
//
|
3675
|
+
// ---------------------------------------------------------------------
|
3676
|
+
// [!] Setting custom statement type to procedure calls and adding color
|
3677
|
+
// ---------------------------------------------------------------------
|
3654
3678
|
|
3655
3679
|
var oldProceduresCallNoReturnInit = Blockly.Blocks['procedures_callnoreturn'].init;
|
3656
3680
|
Blockly.Blocks['procedures_callnoreturn'].init = function() {
|
3657
3681
|
oldProceduresCallNoReturnInit.call(this);
|
3682
|
+
|
3658
3683
|
if (customStatementType) {
|
3659
3684
|
this.jsonInit({
|
3660
3685
|
type: customStatementType,
|
@@ -3662,6 +3687,27 @@ window.initProcedsBlockly = function(customStatementType) {
|
|
3662
3687
|
nextStatement: customStatementType
|
3663
3688
|
});
|
3664
3689
|
}
|
3690
|
+
|
3691
|
+
this.setColour((
|
3692
|
+
Blockly.CUSTOM_COLORS && (
|
3693
|
+
Blockly.CUSTOM_COLORS[this.type] ||
|
3694
|
+
Blockly.CUSTOM_COLORS.procedure_call
|
3695
|
+
)) || Blockly.Blocks.procedures.HUE);
|
3696
|
+
};
|
3697
|
+
|
3698
|
+
// ----------------------------------
|
3699
|
+
// [!] Adding color to function calls
|
3700
|
+
// ----------------------------------
|
3701
|
+
|
3702
|
+
var oldProceduresCallReturnInit = Blockly.Blocks['procedures_callreturn'].init;
|
3703
|
+
Blockly.Blocks['procedures_callreturn'].init = function() {
|
3704
|
+
oldProceduresCallReturnInit.call(this);
|
3705
|
+
|
3706
|
+
this.setColour((
|
3707
|
+
Blockly.CUSTOM_COLORS && (
|
3708
|
+
Blockly.CUSTOM_COLORS[this.type] || // TODO: Usar this.type en todos los cosos de colors
|
3709
|
+
Blockly.CUSTOM_COLORS.function_call
|
3710
|
+
)) || Blockly.Blocks.procedures.HUE);
|
3665
3711
|
};
|
3666
3712
|
|
3667
3713
|
// -------------------------------
|
@@ -3985,10 +4031,11 @@ window.initProcedsBlockly = function(customStatementType) {
|
|
3985
4031
|
</script>
|
3986
4032
|
<script>initProcedsBlockly("Statement");</script>
|
3987
4033
|
<script>var MINUS = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAQAAAD2e2DtAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAHdElNRQfhDAUCCi+xWH4JAAABcUlEQVR42u3c7ZGCMBSG0etuYcTKls7AyrSEVWd4+bjnUECMeSbhD6kCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIBzu4XHm2rUvPekD2yutR57/4itTLXU0/Pvs9SUW5TcDrDUyE3r9Na6ZwZKBWD5PxVKIBPAVGtknGsZibeBTADPyCjXE1idn8A0/gJjXFPgn0sEwIEljgAHwPc2Xx87QHMCaE4AzQmgOQE0J4DmBNCcAJoTQHMCaE4AzQmgOQE0J4DmBNCcAJoTQHMCaE4AzQmgOQE0J4DmBNDcb2SUsfc0T2re/utAO0BzPg49sot8HOoI+M5IDJIJ4OF+gI+F7gpyRcwxxa6Iyb0E3mvYB96y1kgtv2vijubS18QBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAWXq7xrTQhKAi3AAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE3LTEyLTA1VDAyOjEwOjQ3LTA1OjAwdZLI/gAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNy0xMi0wNVQwMjoxMDo0Ny0wNTowMATPcEIAAAAASUVORK5CYII=";
|
4034
|
+
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==";
|
3988
4035
|
|
3989
4036
|
/* global Blockly */
|
3990
4037
|
|
3991
|
-
Blockly.
|
4038
|
+
Blockly.CUSTOM_COLORS = {
|
3992
4039
|
globalHsvSaturation: Blockly.HSV_SATURATION,
|
3993
4040
|
globalHsvValue: Blockly.HSV_VALUE,
|
3994
4041
|
primitiveCommand: "#8DA65B",
|
@@ -4000,6 +4047,13 @@ Blockly.GOBSTONES_COLORS = {
|
|
4000
4047
|
interactiveProgram: "#A6805B",
|
4001
4048
|
interactiveBinding: "#A6995B",
|
4002
4049
|
procedure: "#995BA6",
|
4050
|
+
function: "#774A77",
|
4051
|
+
primitiveProcedure: "#CACACA",
|
4052
|
+
primitiveFunction: "#BABABA",
|
4053
|
+
procedure_call: "#661CF6",
|
4054
|
+
function_call: "#330610",
|
4055
|
+
variable: "#FF0000",
|
4056
|
+
parameter: "#0000FF",
|
4003
4057
|
complete: "#A65C5B",
|
4004
4058
|
};
|
4005
4059
|
|
@@ -4036,7 +4090,7 @@ Blockly.Blocks.Program = {
|
|
4036
4090
|
}
|
4037
4091
|
]
|
4038
4092
|
})
|
4039
|
-
this.setColour(Blockly.
|
4093
|
+
this.setColour(Blockly.CUSTOM_COLORS.Program || Blockly.CUSTOM_COLORS.program);
|
4040
4094
|
this.setDeletable(true);
|
4041
4095
|
this.setEditable(true);
|
4042
4096
|
this.setMovable(true);
|
@@ -4080,7 +4134,7 @@ Blockly.Blocks.InteractiveProgram = {
|
|
4080
4134
|
}
|
4081
4135
|
]
|
4082
4136
|
});
|
4083
|
-
this.setColour(Blockly.
|
4137
|
+
this.setColour(Blockly.CUSTOM_COLORS.InteractiveProgram || Blockly.CUSTOM_COLORS.interactiveProgram);
|
4084
4138
|
this.setDeletable(true);
|
4085
4139
|
this.setEditable(true);
|
4086
4140
|
this.setMovable(true);
|
@@ -4222,7 +4276,7 @@ createInteractiveBinding = (name, keys) => {
|
|
4222
4276
|
options: keys.map(it => [it.name, it.code]),
|
4223
4277
|
}
|
4224
4278
|
],
|
4225
|
-
colour: Blockly.
|
4279
|
+
colour: Blockly.CUSTOM_COLORS.InteractiveBinding || Blockly.CUSTOM_COLORS.interactiveBinding,
|
4226
4280
|
tooltip: "Escoger una entrada",
|
4227
4281
|
});
|
4228
4282
|
|
@@ -4323,7 +4377,7 @@ Blockly.Blocks.RepeticionSimple = {
|
|
4323
4377
|
nextStatement: "Statement",
|
4324
4378
|
});
|
4325
4379
|
|
4326
|
-
this.setColour(Blockly.
|
4380
|
+
this.setColour(Blockly.CUSTOM_COLORS.RepeticionSimple || Blockly.CUSTOM_COLORS.controlStructure);
|
4327
4381
|
this.appendValueInput('count')
|
4328
4382
|
.appendField('repetir');
|
4329
4383
|
this.appendDummyInput()
|
@@ -4341,7 +4395,7 @@ Blockly.Blocks.RepeticionCondicional = {
|
|
4341
4395
|
nextStatement: "Statement",
|
4342
4396
|
});
|
4343
4397
|
|
4344
|
-
this.setColour(Blockly.
|
4398
|
+
this.setColour(Blockly.CUSTOM_COLORS.RepeticionCondicional || Blockly.CUSTOM_COLORS.controlStructure);
|
4345
4399
|
this.appendValueInput('condicion')
|
4346
4400
|
.setCheck('Bool')
|
4347
4401
|
.appendField('repetir hasta que');
|
@@ -4358,7 +4412,7 @@ Blockly.Blocks.AlternativaSimple = {
|
|
4358
4412
|
nextStatement: "Statement",
|
4359
4413
|
});
|
4360
4414
|
|
4361
|
-
this.setColour(Blockly.
|
4415
|
+
this.setColour(Blockly.CUSTOM_COLORS.AlternativaSimple || Blockly.CUSTOM_COLORS.controlStructure);
|
4362
4416
|
this.appendValueInput('condicion')
|
4363
4417
|
.appendField(Blockly.Msg["CONTROLS_IF_MSG_IF"]);
|
4364
4418
|
this.appendStatementInput('block').setCheck(["Statement"]);
|
@@ -4430,7 +4484,7 @@ Blockly.Blocks.AlternativaCompleta = {
|
|
4430
4484
|
"extensions": ["controls_if_tooltip"]
|
4431
4485
|
});
|
4432
4486
|
|
4433
|
-
this.setColour(Blockly.
|
4487
|
+
this.setColour(Blockly.CUSTOM_COLORS.AlternativaCompleta || Blockly.CUSTOM_COLORS.controlStructure);
|
4434
4488
|
this.setInputsInline(true);
|
4435
4489
|
|
4436
4490
|
this.elseCount_++;
|
@@ -4493,7 +4547,7 @@ Blockly.Blocks.Poner = {
|
|
4493
4547
|
name: 'COLOR'
|
4494
4548
|
}
|
4495
4549
|
],
|
4496
|
-
colour: Blockly.
|
4550
|
+
colour: Blockly.CUSTOM_COLORS.Poner || Blockly.CUSTOM_COLORS.primitiveCommand,
|
4497
4551
|
tooltip: 'Poner color en casillero.',
|
4498
4552
|
inputsInline: true
|
4499
4553
|
});
|
@@ -4513,7 +4567,7 @@ Blockly.Blocks.Sacar = {
|
|
4513
4567
|
name: 'COLOR'
|
4514
4568
|
}
|
4515
4569
|
],
|
4516
|
-
colour: Blockly.
|
4570
|
+
colour: Blockly.CUSTOM_COLORS.Sacar || Blockly.CUSTOM_COLORS.primitiveCommand,
|
4517
4571
|
tooltip: 'Sacar color de casillero.',
|
4518
4572
|
inputsInline: true
|
4519
4573
|
});
|
@@ -4533,7 +4587,7 @@ Blockly.Blocks.Mover = {
|
|
4533
4587
|
name: 'DIRECCION'
|
4534
4588
|
}
|
4535
4589
|
],
|
4536
|
-
colour: Blockly.
|
4590
|
+
colour: Blockly.CUSTOM_COLORS.Mover || Blockly.CUSTOM_COLORS.primitiveCommand,
|
4537
4591
|
tooltip: 'Mover en una dirección.',
|
4538
4592
|
inputsInline: true
|
4539
4593
|
});
|
@@ -4553,7 +4607,7 @@ Blockly.Blocks.IrAlBorde = {
|
|
4553
4607
|
name: 'DIRECCION'
|
4554
4608
|
}
|
4555
4609
|
],
|
4556
|
-
colour: Blockly.
|
4610
|
+
colour: Blockly.CUSTOM_COLORS.IrAlBorde || Blockly.CUSTOM_COLORS.primitiveCommand,
|
4557
4611
|
tooltip: 'Ir al borde del tablero.',
|
4558
4612
|
inputsInline: true
|
4559
4613
|
});
|
@@ -4567,7 +4621,7 @@ Blockly.Blocks.VaciarTablero = {
|
|
4567
4621
|
previousStatement: "Statement",
|
4568
4622
|
nextStatement: "Statement",
|
4569
4623
|
message0: 'Vaciar tablero',
|
4570
|
-
colour: Blockly.
|
4624
|
+
colour: Blockly.CUSTOM_COLORS.VaciarTablero || Blockly.CUSTOM_COLORS.primitiveCommand,
|
4571
4625
|
tooltip: 'Vaciar el tablero.',
|
4572
4626
|
inputsInline: true
|
4573
4627
|
});
|
@@ -4593,7 +4647,7 @@ Blockly.Blocks.BOOM = {
|
|
4593
4647
|
}
|
4594
4648
|
],
|
4595
4649
|
"inputsInline": false,
|
4596
|
-
"colour": Blockly.
|
4650
|
+
"colour": Blockly.CUSTOM_COLORS.BOOM || Blockly.CUSTOM_COLORS.primitiveCommand,
|
4597
4651
|
"tooltip": "Este comando hace que estalle todo."
|
4598
4652
|
});
|
4599
4653
|
}
|
@@ -4613,7 +4667,7 @@ Blockly.Blocks.ComandoCompletar = {
|
|
4613
4667
|
"nextStatement": "Statement",
|
4614
4668
|
"lastDummyAlign0": "RIGHT",
|
4615
4669
|
"message0": "COMPLETAR",
|
4616
|
-
"colour": Blockly.
|
4670
|
+
"colour": Blockly.CUSTOM_COLORS.ComandoCompletar || Blockly.CUSTOM_COLORS.complete,
|
4617
4671
|
"tooltip": "Tenés que reemplazar este bloque por tu solución"
|
4618
4672
|
});
|
4619
4673
|
},
|
@@ -4629,7 +4683,7 @@ Blockly.Blocks.AsociacionDeTeclaCompletar = {
|
|
4629
4683
|
"nextStatement": "InteractiveBinding",
|
4630
4684
|
"lastDummyAlign0": "RIGHT",
|
4631
4685
|
"message0": "COMPLETAR",
|
4632
|
-
"colour": Blockly.
|
4686
|
+
"colour": Blockly.CUSTOM_COLORS.AsociacionDeTeclaCompletar || Blockly.CUSTOM_COLORS.complete,
|
4633
4687
|
"tooltip": "Tenés que reemplazar este bloque por tu solución"
|
4634
4688
|
});
|
4635
4689
|
},
|
@@ -4641,13 +4695,30 @@ Blockly.Blocks.AsociacionDeTeclaCompletar = {
|
|
4641
4695
|
// Expresiones:
|
4642
4696
|
// ------------------------------------------------------
|
4643
4697
|
|
4698
|
+
function deepCopyObj(aObject) {
|
4699
|
+
var bObject, v, k;
|
4700
|
+
bObject = Array.isArray(aObject) ? [] : {};
|
4701
|
+
for (k in aObject) {
|
4702
|
+
v = aObject[k];
|
4703
|
+
bObject[k] = (typeof v === "object") ? deepCopyObj(v) : v;
|
4704
|
+
}
|
4705
|
+
return bObject;
|
4706
|
+
}
|
4707
|
+
|
4708
|
+
const oldMathNumber = Blockly.Blocks.math_number;
|
4709
|
+
Blockly.Blocks.math_number = deepCopyObj(Blockly.Blocks.math_number);
|
4710
|
+
Blockly.Blocks.math_number.init = function() {
|
4711
|
+
oldMathNumber.init.call(this);
|
4712
|
+
this.setColour(Blockly.CUSTOM_COLORS.math_number || Blockly.CUSTOM_COLORS.literalExpression);
|
4713
|
+
}
|
4714
|
+
|
4644
4715
|
Blockly.Blocks.ExpresionCompletar = {
|
4645
4716
|
init: function () {
|
4646
4717
|
this.jsonInit({
|
4647
4718
|
"type": "completar_expression",
|
4648
4719
|
"message0": "COMPLETAR",
|
4649
4720
|
"output": "any",
|
4650
|
-
"colour": Blockly.
|
4721
|
+
"colour": Blockly.CUSTOM_COLORS.ExpresionCompletar || Blockly.CUSTOM_COLORS.complete,
|
4651
4722
|
"tooltip": "Tenés que reemplazar este bloque por tu solución"
|
4652
4723
|
});
|
4653
4724
|
},
|
@@ -4667,7 +4738,7 @@ function createLiteralSelectorBlock(type,values){
|
|
4667
4738
|
options: values.map(value => [value,value]),
|
4668
4739
|
}],
|
4669
4740
|
output: type,
|
4670
|
-
colour: Blockly.
|
4741
|
+
colour: Blockly.CUSTOM_COLORS[`${type}Selector`] || Blockly.CUSTOM_COLORS.literalExpression,
|
4671
4742
|
tooltip: "Escoger " + type,
|
4672
4743
|
});
|
4673
4744
|
}
|
@@ -4689,7 +4760,7 @@ function createSingleParameterExpressionBlock(blockText,returnType){
|
|
4689
4760
|
name: 'VALUE'
|
4690
4761
|
}
|
4691
4762
|
],
|
4692
|
-
colour: Blockly.
|
4763
|
+
colour: Blockly.CUSTOM_COLORS[this.type] || Blockly.CUSTOM_COLORS.expression,
|
4693
4764
|
inputsInline: true,
|
4694
4765
|
output: returnType
|
4695
4766
|
})
|
@@ -4727,7 +4798,7 @@ Blockly.Blocks.OperadorDeComparacion = {
|
|
4727
4798
|
name: 'arg2'
|
4728
4799
|
}
|
4729
4800
|
],
|
4730
|
-
colour: Blockly.
|
4801
|
+
colour: Blockly.CUSTOM_COLORS.OperadorDeComparacion || Blockly.CUSTOM_COLORS.expression,
|
4731
4802
|
inputsInline: false,
|
4732
4803
|
output: 'Bool'
|
4733
4804
|
});
|
@@ -4756,7 +4827,7 @@ Blockly.Blocks.OperadorNumerico = {
|
|
4756
4827
|
name: 'arg2'
|
4757
4828
|
}
|
4758
4829
|
],
|
4759
|
-
colour: Blockly.
|
4830
|
+
colour: Blockly.CUSTOM_COLORS.OperadorNumerico || Blockly.CUSTOM_COLORS.expression,
|
4760
4831
|
inputsInline: false,
|
4761
4832
|
output: 'Number'
|
4762
4833
|
});
|
@@ -4775,7 +4846,7 @@ Blockly.Blocks.OperadorLogico = {
|
|
4775
4846
|
{
|
4776
4847
|
type: 'field_dropdown',
|
4777
4848
|
name: 'OPERATOR',
|
4778
|
-
options: [['y también', '
|
4849
|
+
options: [['y también', 'AND'], ['o bien', '||']]
|
4779
4850
|
},
|
4780
4851
|
{
|
4781
4852
|
type: 'input_dummy'
|
@@ -4785,7 +4856,7 @@ Blockly.Blocks.OperadorLogico = {
|
|
4785
4856
|
name: 'arg2'
|
4786
4857
|
}
|
4787
4858
|
],
|
4788
|
-
colour: Blockly.
|
4859
|
+
colour: Blockly.CUSTOM_COLORS.OperadorLogico || Blockly.CUSTOM_COLORS.expression,
|
4789
4860
|
inputsInline: false,
|
4790
4861
|
output: 'Bool'
|
4791
4862
|
});
|
@@ -4796,12 +4867,12 @@ Blockly.Blocks.Asignacion = {
|
|
4796
4867
|
init: function () {
|
4797
4868
|
this.jsonInit({
|
4798
4869
|
"type": "asignacion",
|
4799
|
-
"message0": "%1 %2
|
4870
|
+
"message0": "Recordar que %1 %2 vale %3 %4",
|
4800
4871
|
"args0": [
|
4801
4872
|
{
|
4802
4873
|
"type": "field_input",
|
4803
4874
|
"name": "varName",
|
4804
|
-
"text": "
|
4875
|
+
"text": "una variable",
|
4805
4876
|
"class": Blockly.Procedures.rename
|
4806
4877
|
},
|
4807
4878
|
{
|
@@ -4818,11 +4889,24 @@ Blockly.Blocks.Asignacion = {
|
|
4818
4889
|
"inputsInline": true,
|
4819
4890
|
"previousStatement": null,
|
4820
4891
|
"nextStatement": null,
|
4821
|
-
"colour": Blockly.
|
4892
|
+
"colour": Blockly.CUSTOM_COLORS.Asignacion || Blockly.CUSTOM_COLORS.assignation,
|
4822
4893
|
"tooltip": "",
|
4823
4894
|
"helpUrl": ""
|
4824
4895
|
});
|
4825
|
-
|
4896
|
+
|
4897
|
+
var self = this;
|
4898
|
+
var createGetterButton = new Blockly.FieldImage(
|
4899
|
+
HAND,
|
4900
|
+
16,
|
4901
|
+
16,
|
4902
|
+
"Obtener variable",
|
4903
|
+
function() {
|
4904
|
+
var name = self.getFieldValue('varName');
|
4905
|
+
self.createVariableBlock(name);
|
4906
|
+
}
|
4907
|
+
);
|
4908
|
+
|
4909
|
+
this.appendDummyInput().appendField(createGetterButton);
|
4826
4910
|
},
|
4827
4911
|
|
4828
4912
|
customContextMenu: function(options) {
|
@@ -4837,20 +4921,7 @@ Blockly.Blocks.Asignacion = {
|
|
4837
4921
|
return Blockly.createBlockSvg(this.workspace, 'variables_get', b => {
|
4838
4922
|
b.setFieldValue(name, 'VAR');
|
4839
4923
|
b.moveBy(10,5);
|
4840
|
-
b.parentAssignmentBlock = this;
|
4841
|
-
this.getters.push(b);
|
4842
4924
|
});
|
4843
|
-
},
|
4844
|
-
|
4845
|
-
removeGetter: function(block){
|
4846
|
-
this.getters.splice(this.getters.indexOf(block),1);
|
4847
|
-
},
|
4848
|
-
|
4849
|
-
onchange: function(event){
|
4850
|
-
if(event.blockId == this.id && event.type == Blockly.Events.BLOCK_CHANGE &&
|
4851
|
-
event.element == 'field'){
|
4852
|
-
this.getters.forEach(block => block.setFieldValue(event.newValue,'VAR'));
|
4853
|
-
};
|
4854
4925
|
}
|
4855
4926
|
};
|
4856
4927
|
|
@@ -4862,13 +4933,13 @@ Blockly.Blocks.variables_get = {
|
|
4862
4933
|
"message0": "%1",
|
4863
4934
|
"args0": [
|
4864
4935
|
{
|
4865
|
-
"type": "
|
4936
|
+
"type": "field_input",
|
4866
4937
|
"name": "VAR",
|
4867
4938
|
"text": "nombre de variable"
|
4868
4939
|
}
|
4869
4940
|
],
|
4870
4941
|
"output": null,
|
4871
|
-
"colour":
|
4942
|
+
"colour": Blockly.CUSTOM_COLORS.variable,
|
4872
4943
|
"tooltip": "",
|
4873
4944
|
"helpUrl": "",
|
4874
4945
|
});
|
@@ -4886,8 +4957,15 @@ Blockly.Blocks.variables_get = {
|
|
4886
4957
|
},
|
4887
4958
|
|
4888
4959
|
onchange: function(event){
|
4889
|
-
if(
|
4890
|
-
|
4960
|
+
if (this.$parent) {
|
4961
|
+
this.getField("VAR").EDITABLE = false;
|
4962
|
+
this.setColour(Blockly.CUSTOM_COLORS.parameter);
|
4963
|
+
} else {
|
4964
|
+
this.setColour(Blockly.CUSTOM_COLORS.variable);
|
4965
|
+
}
|
4966
|
+
|
4967
|
+
if (event.blockId == this.id && event.type == Blockly.Events.BLOCK_DELETE) {
|
4968
|
+
// do something with parent
|
4891
4969
|
}
|
4892
4970
|
}
|
4893
4971
|
};
|
@@ -5269,6 +5347,7 @@ Blockly.GobstonesLanguage.OperadorNumerico = function (block) {
|
|
5269
5347
|
Blockly.GobstonesLanguage.OperadorLogico = function(block) {
|
5270
5348
|
// Operations 'and', 'or'.
|
5271
5349
|
var operator = block.getFieldValue('OPERATOR');
|
5350
|
+
if (operator === "AND") operator = "&&";
|
5272
5351
|
var order = (operator == '&&') ? Blockly.GobstonesLanguage.ORDER_LOGICAL_AND : Blockly.GobstonesLanguage.ORDER_LOGICAL_OR;
|
5273
5352
|
var argument0 = Blockly.GobstonesLanguage.valueToCode(block, 'arg1', order) || '()';
|
5274
5353
|
var argument1 = Blockly.GobstonesLanguage.valueToCode(block, 'arg2', order) || '()';
|
@@ -5954,7 +6033,7 @@ Blockly.ErrorInforming.CssContent = [
|
|
5954
6033
|
for (var item of ttree) {
|
5955
6034
|
if (item.type !== "category") continue;
|
5956
6035
|
|
5957
|
-
if (item.name ===
|
6036
|
+
if (item.name === categoryName)
|
5958
6037
|
item.child = customTree;
|
5959
6038
|
else
|
5960
6039
|
addCustomActionsChilds(item.child);
|
@@ -6004,9 +6083,9 @@ Blockly.ErrorInforming.CssContent = [
|
|
6004
6083
|
return xml.join('\n');
|
6005
6084
|
},
|
6006
6085
|
|
6007
|
-
_getPartsByConvention(name) {
|
6086
|
+
_getPartsByConvention(isProcedure, name) {
|
6008
6087
|
let parts = name.replace(/([A-Z])/g, " $1").toLowerCase();
|
6009
|
-
parts = parts[1].toUpperCase() + parts.substring(2);
|
6088
|
+
if (isProcedure) parts = parts[1].toUpperCase() + parts.substring(2);
|
6010
6089
|
parts = this._getParts(parts);
|
6011
6090
|
|
6012
6091
|
return parts;
|
@@ -6025,14 +6104,14 @@ Blockly.ErrorInforming.CssContent = [
|
|
6025
6104
|
const icon = definition.attributes && definition.attributes.block_icon;
|
6026
6105
|
|
6027
6106
|
const finalName = customName || name;
|
6028
|
-
const parts = (customName ? this._getParts : this._getPartsByConvention)
|
6107
|
+
const parts = (customName ? this._getParts : this._getPartsByConvention.bind(this, true))
|
6029
6108
|
.bind(this)(finalName);
|
6030
6109
|
|
6031
6110
|
// Bloque
|
6032
6111
|
Blockly.Blocks[name] = {
|
6033
6112
|
init: function () {
|
6034
6113
|
let argsIndex = 1;
|
6035
|
-
this.setColour(Blockly.
|
6114
|
+
this.setColour(Blockly.CUSTOM_COLORS.primitiveProcedure);
|
6036
6115
|
|
6037
6116
|
if (icon) {
|
6038
6117
|
this.appendDummyInput().appendField(new Blockly.FieldImage(
|
@@ -6085,14 +6164,14 @@ Blockly.ErrorInforming.CssContent = [
|
|
6085
6164
|
const icon = definition.attributes && definition.attributes.block_icon;
|
6086
6165
|
|
6087
6166
|
const finalName = customName || name;
|
6088
|
-
const parts = (customName ? this._getParts : this._getPartsByConvention)
|
6167
|
+
const parts = (customName ? this._getParts : this._getPartsByConvention.bind(this, false))
|
6089
6168
|
.bind(this)(finalName);
|
6090
6169
|
|
6091
6170
|
// Bloque
|
6092
6171
|
Blockly.Blocks[name] = {
|
6093
6172
|
init: function () {
|
6094
6173
|
let argsIndex = 1;
|
6095
|
-
this.setColour(Blockly.
|
6174
|
+
this.setColour(Blockly.CUSTOM_COLORS.primitiveFunction);
|
6096
6175
|
|
6097
6176
|
if (icon) {
|
6098
6177
|
this.appendDummyInput().appendField(new Blockly.FieldImage(
|
@@ -6239,7 +6318,10 @@ Blockly.ErrorInforming.CssContent = [
|
|
6239
6318
|
},
|
6240
6319
|
|
6241
6320
|
_onWorkspaceUpdate: function () {
|
6242
|
-
|
6321
|
+
const hasReloadedXml = this._runWorkspaceXmlRetrocompatibilityFixes();
|
6322
|
+
if (hasReloadedXml) return;
|
6323
|
+
|
6324
|
+
if (this.workspaceXml != this._blocklyWorkspaceXML) {
|
6243
6325
|
this.workspace.clear();
|
6244
6326
|
let dom = Blockly.Xml.textToDom(this.workspaceXml);
|
6245
6327
|
try {
|
@@ -6258,6 +6340,16 @@ Blockly.ErrorInforming.CssContent = [
|
|
6258
6340
|
}
|
6259
6341
|
},
|
6260
6342
|
|
6343
|
+
_runWorkspaceXmlRetrocompatibilityFixes: function() {
|
6344
|
+
const oldAndOperator = `<field name="OPERATOR">&&</field>`;
|
6345
|
+
const newAndOperator = `<field name="OPERATOR">AND</field>`;
|
6346
|
+
|
6347
|
+
if (this.workspaceXml.includes(oldAndOperator)) {
|
6348
|
+
this.workspaceXml = this.workspaceXml.replace(new RegExp(oldAndOperator, "g"), newAndOperator);
|
6349
|
+
return true;
|
6350
|
+
}
|
6351
|
+
},
|
6352
|
+
|
6261
6353
|
/**
|
6262
6354
|
* Reinicializa el workspace, dejando solo el bloque programa
|
6263
6355
|
*/
|
@@ -6472,16 +6564,18 @@ Blockly.ErrorInforming.CssContent = [
|
|
6472
6564
|
},
|
6473
6565
|
|
6474
6566
|
testColors(colors) {
|
6475
|
-
Blockly.
|
6567
|
+
Blockly.CUSTOM_COLORS = colors;
|
6476
6568
|
Blockly.HSV_SATURATION = colors.globalHsvSaturation;
|
6477
6569
|
Blockly.HSV_VALUE = colors.globalHsvValue;
|
6478
|
-
Blockly.Constants.Math.HUE = colors.literalExpression;
|
6479
|
-
Blockly.Msg.MATH_HUE = colors.literalExpression.toString();
|
6480
6570
|
Blockly.Blocks.procedures.HUE = colors.procedure;
|
6481
6571
|
|
6482
|
-
var
|
6572
|
+
var xmlDom = Blockly.Xml.workspaceToDom(this.workspace);
|
6573
|
+
const xml = Blockly.Xml.domToText(xmlDom);
|
6483
6574
|
this.resetWorkspace();
|
6484
|
-
|
6575
|
+
|
6576
|
+
setTimeout(() => {
|
6577
|
+
this.workspaceXml = xml;
|
6578
|
+
}, 0);
|
6485
6579
|
}
|
6486
6580
|
});
|
6487
6581
|
</script>
|
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.11.
|
4
|
+
version: 0.11.2
|
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-04-
|
11
|
+
date: 2018-04-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|