prolog-blockly 1.0.15 → 1.0.16

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: fdcc5d1cdcddd66bb19212426e14a672ad6fc81ef321071397d22c4f1ce7ecce
4
- data.tar.gz: 76484a9557a7eb4b4a3f5ef82277f50bd19d079083e349c627b86c575ce4762f
3
+ metadata.gz: c9f825a09a92f0844d92a5e727d5125a3f5521c60e49a83e290e201fa1f558b5
4
+ data.tar.gz: 2c1e420db5c725c8f1942367e378bab7e24ff8aca4ca9d7e267addde6a773740
5
5
  SHA512:
6
- metadata.gz: 62bf95021fd2e7f63130ce1a20989cc5012a28fb5eb5a843ce3d90e4b2ae1fd3d674a5ddb39f8f33630ce38e15be4b0418eafa9abd853cd2d69f1e5f79ce1ebf
7
- data.tar.gz: 9d275ffd33446ecd0ab44ce5fb63d3d73bcb6872a7dcf851b7ad11294255c4a31307c0085edbd3e5d95dbd2b9b8039f40939c1f14abe339f2646ee64f319c1c4
6
+ metadata.gz: 232daaa3bbfb7d3649ac94d628530c4332c360e144ff46a63c7bea4f67d6a9ba121208f2803078c69a40484192f437ac5bb9fc3d35e31c0d85a8a0f8327333fa
7
+ data.tar.gz: 8305af9ac5b90de74175c7212ced5a74a8e835475cf778d58debe1c80a466cfd3648c2dfc1f0e3a646c477b01f6aaff4e2fe7258e81f23c4b4e9480605d5afbf
@@ -4311,18 +4311,12 @@ Blockly.MUMUKI_COLORS = {
4311
4311
  green: "#3FAA9D",
4312
4312
  dark_green:"#1F879A"
4313
4313
  };
4314
- // reserved
4315
- Blockly.CUSTOM_COLORS.program = Blockly.MUMUKI_COLORS.pink;
4316
- Blockly.CUSTOM_COLORS.interactiveProgram = Blockly.MUMUKI_COLORS.pink;
4317
- Blockly.CUSTOM_COLORS.interactiveBinding = Blockly.MUMUKI_COLORS.pink;
4318
- Blockly.CUSTOM_COLORS.procedure = Blockly.MUMUKI_COLORS.pink;
4319
- Blockly.CUSTOM_COLORS.function = Blockly.MUMUKI_COLORS.pink;
4320
- Blockly.CUSTOM_COLORS.complete = Blockly.MUMUKI_COLORS.pink;
4314
+
4321
4315
  // commands
4322
4316
  Blockly.CUSTOM_COLORS.controlStructure = Blockly.MUMUKI_COLORS.yellow;
4323
4317
  Blockly.CUSTOM_COLORS.primitiveCommand = Blockly.MUMUKI_COLORS.yellow;
4324
4318
  Blockly.CUSTOM_COLORS.primitiveProcedure = Blockly.MUMUKI_COLORS.yellow;
4325
- Blockly.CUSTOM_COLORS.procedure_call = Blockly.MUMUKI_COLORS.yellow;
4319
+ Blockly.CUSTOM_COLORS.Fact = Blockly.MUMUKI_COLORS.yellow;
4326
4320
  Blockly.CUSTOM_COLORS.assignation = Blockly.MUMUKI_COLORS.dark_green;
4327
4321
 
4328
4322
  // expressions
@@ -4332,8 +4326,6 @@ Blockly.CUSTOM_COLORS.primitiveExpression = Blockly.MUMUKI_COLORS.blue;
4332
4326
  Blockly.CUSTOM_COLORS.operator = Blockly.MUMUKI_COLORS.blue;
4333
4327
  Blockly.CUSTOM_COLORS.VariableSelector = Blockly.MUMUKI_COLORS.green;
4334
4328
  Blockly.CUSTOM_COLORS.parameter = Blockly.MUMUKI_COLORS.blue;
4335
- Blockly.CUSTOM_COLORS.primitiveFunction = Blockly.MUMUKI_COLORS.blue;
4336
- Blockly.CUSTOM_COLORS.function_call = Blockly.MUMUKI_COLORS.blue;
4337
4329
  Blockly.CUSTOM_COLORS.Not = Blockly.MUMUKI_COLORS.dark_green;
4338
4330
  Blockly.CUSTOM_COLORS.ForAll = Blockly.MUMUKI_COLORS.dark_green;
4339
4331
 
@@ -4350,494 +4342,6 @@ Blockly.createBlockSvg = function(workspace, name, f) {
4350
4342
  newBlock.render();
4351
4343
  };
4352
4344
 
4353
- Blockly.Blocks.Program = {
4354
- init: function () {
4355
- this.jsonInit({
4356
- "type": "Program",
4357
- "message0": "%1 %2 %3",
4358
- "args0": [
4359
- {
4360
- "type": "field_label",
4361
- "text": "programa"
4362
- },
4363
- {
4364
- "type": "input_dummy"
4365
- },
4366
- {
4367
- "type": "input_statement",
4368
- "name": "program",
4369
- "check": ["Statement"]
4370
- }
4371
- ]
4372
- })
4373
- this.setColour(Blockly.CUSTOM_COLORS.Program || Blockly.CUSTOM_COLORS.program);
4374
- this.setDeletable(true);
4375
- this.setEditable(true);
4376
- this.setMovable(true);
4377
- },
4378
-
4379
- setDisabledAndUpdateTimestamp: function(disabled) {
4380
- this.setDisabled(disabled);
4381
- if (!disabled) this.$timestamp = Date.now();
4382
- },
4383
-
4384
- mutationToDom: function() {
4385
- var container = document.createElement("mutation");
4386
- container.setAttribute("timestamp", this.$timestamp || Date.now());
4387
- return container;
4388
- },
4389
-
4390
- domToMutation: function(xmlElement) {
4391
- const timestamp = xmlElement.getAttribute("timestamp");
4392
- this.$timestamp = timestamp || Date.now();
4393
- },
4394
-
4395
- };
4396
-
4397
- Blockly.Blocks.InteractiveProgram = {
4398
- init: function () {
4399
- this.jsonInit({
4400
- "type": "InteractiveProgram",
4401
- "message0": "%1 %2 %3",
4402
- "args0": [
4403
- {
4404
- "type": "field_label",
4405
- "text": "programa interactivo"
4406
- },
4407
- {
4408
- "type": "input_dummy"
4409
- },
4410
- {
4411
- "type": "input_statement",
4412
- "name": "interactiveprogram",
4413
- "check": ["InteractiveBinding"]
4414
- }
4415
- ]
4416
- });
4417
- this.setColour(Blockly.CUSTOM_COLORS.InteractiveProgram || Blockly.CUSTOM_COLORS.interactiveProgram);
4418
- this.setDeletable(true);
4419
- this.setEditable(true);
4420
- this.setMovable(true);
4421
- },
4422
-
4423
- customContextMenu: function(options) {
4424
- options.unshift({ text: `Agregar timeout`, enabled: !this.$timeout, callback: () => {
4425
- let x = '';
4426
- while (isNaN(parseInt(x)) || parseInt(x) <= 0)
4427
- x = prompt("Ingrese un número en milisegundos");
4428
- x = parseInt(x);
4429
-
4430
- this._addTimeout(x);
4431
- }});
4432
-
4433
- options.unshift({ text: `Agregar inicialización`, enabled: !this.$init, callback: () => {
4434
- this._addInit();
4435
- }});
4436
- },
4437
-
4438
- setDisabledAndUpdateTimestamp: function(disabled) {
4439
- this.setDisabled(disabled);
4440
- if (!disabled) this.$timestamp = Date.now();
4441
- },
4442
-
4443
- mutationToDom: function() {
4444
- var container = document.createElement("mutation");
4445
- if (this.$init) container.setAttribute("init", this.$init);
4446
- if (this.$timeout) container.setAttribute("timeout", this.$timeout);
4447
-
4448
- container.setAttribute("timestamp", this.$timestamp || Date.now());
4449
- return container;
4450
- },
4451
-
4452
- domToMutation: function(xmlElement) {
4453
- const init = xmlElement.getAttribute("init");
4454
- const timeout = xmlElement.getAttribute("timeout");
4455
- const timestamp = xmlElement.getAttribute("timestamp");
4456
-
4457
- if (init) this._addInit()
4458
- if (timeout) this._addTimeout(parseInt(timeout));
4459
- this.$timestamp = timestamp || Date.now();
4460
- },
4461
-
4462
- _addInit() {
4463
- this.$init = true;
4464
-
4465
- var removeButton = new Blockly.FieldImage(
4466
- MINUS,
4467
- 16,
4468
- 16,
4469
- "Eliminar",
4470
- function() {
4471
- this.$init = false;
4472
- this.removeInput("initlabel");
4473
- this.removeInput("init");
4474
- this.removeInput("statementsLabel");
4475
- }.bind(this)
4476
- );
4477
-
4478
- this.appendDummyInput("initlabel").appendField('Al inicializar:').appendField(removeButton);
4479
- this.appendStatementInput('init').setCheck(["Statement"]);
4480
- this.appendDummyInput("statementsLabel").appendField('Al apretar...');
4481
- this.moveInputBefore("init", "interactiveprogram");
4482
- this.moveInputBefore("initlabel", "init");
4483
- this.moveInputBefore("statementsLabel", "interactiveprogram");
4484
- },
4485
-
4486
- _addTimeout(timeout) {
4487
- this.$timeout = timeout;
4488
-
4489
- var removeButton = new Blockly.FieldImage(
4490
- MINUS,
4491
- 16,
4492
- 16,
4493
- "Eliminar",
4494
- function() {
4495
- this.$timeout = undefined;
4496
- this.removeInput("timeoutlabel");
4497
- this.removeInput("timeout");
4498
- }.bind(this)
4499
- );
4500
-
4501
- this.appendDummyInput("timeoutlabel").appendField(`Al estar inactivo ${timeout} milisegundos:`).appendField(removeButton);
4502
- this.appendStatementInput('timeout').setCheck(["Statement"]);
4503
- }
4504
- };
4505
-
4506
- // -------------------------------------
4507
- // Programa interactivo
4508
- // -------------------------------------
4509
-
4510
- const modifiers = [
4511
- [ 'SHIFT', 'SHIFT' ],
4512
- [ 'CTRL', 'CTRL' ],
4513
- [ 'ALT', 'ALT' ]
4514
- ];
4515
-
4516
- const getModifiersInput = (block) => block.inputList[1];
4517
- const getModifierFields = (block) => getModifiersInput(block).fieldRow.slice(2);
4518
- const getModifierDropdownFields = (block) => getModifierFields(block).filter(it => it.constructor === Blockly.FieldDropdown);
4519
- const getModifierValues = (block) => getModifierDropdownFields(block).map(it => it.getValue());
4520
- const getAvailableModifiers = (block) => {
4521
- const currentModifiers = getModifierValues(block);
4522
-
4523
- return modifiers.filter(it =>
4524
- currentModifiers.indexOf(it[1]) === -1
4525
- );
4526
- };
4527
- const updateModifierMenuGenerators = (block, nameToIgnore) => {
4528
- const availableModifiers = getAvailableModifiers(block);
4529
- const dropdowns = getModifierDropdownFields(block);
4530
-
4531
- for (var dropdown of dropdowns) {
4532
- if (dropdown.name !== nameToIgnore)
4533
- dropdown.menuGenerator_ = modifiers.filter(it => {
4534
- return it[1] === dropdown.getValue() || availableModifiers.some(availableModifier => availableModifier[1] === it[1])
4535
- });
4536
-
4537
- }
4538
- }
4539
-
4540
- createInteractiveBinding = (name, keys) => {
4541
- return {
4542
- init: function () {
4543
- this.jsonInit({
4544
- message0: "%1 %2 %3 %4",
4545
- type: "InteractiveBinding",
4546
- previousStatement: "InteractiveBinding",
4547
- nextStatement: "InteractiveBinding",
4548
- args0: [
4549
- {
4550
- "type": "field_label",
4551
- "text": "Al apretar " + name
4552
- },
4553
- { "type": "input_dummy" },
4554
- {
4555
- "type": "field_label",
4556
- "text": "➣"
4557
- },
4558
- {
4559
- type: "field_dropdown",
4560
- name: "InteractiveBindingDropdownKey",
4561
- options: keys.map(it => [it.name, it.code]),
4562
- }
4563
- ],
4564
- colour: Blockly.CUSTOM_COLORS.InteractiveBinding || Blockly.CUSTOM_COLORS.interactiveBinding,
4565
- tooltip: "Escoger una entrada",
4566
- });
4567
-
4568
- this.appendStatementInput('block').setCheck(["Statement"]);
4569
-
4570
- const self = this;
4571
- const input = this.inputList[0];
4572
- input.appendField(new Blockly.FieldImage(
4573
- PLUS,
4574
- 16,
4575
- 16,
4576
- "Agregar modificador",
4577
- function() {
4578
- const modifiersCount = getModifierFields(self).length / 2;
4579
- if (modifiersCount >= modifiers.length) return;
4580
-
4581
- self._addModifier();
4582
- }
4583
- ));
4584
- input.appendField(new Blockly.FieldImage(
4585
- CLEAN,
4586
- 16,
4587
- 16,
4588
- "Limpiar modificadores",
4589
- function() {
4590
- self._cleanModifiers();
4591
- }
4592
- ));
4593
- },
4594
-
4595
- customContextMenu: function(options) {
4596
- const modifiersCount = getModifierFields(this).length / 2;
4597
-
4598
- options.unshift({ text: `Limpiar modificadores`, enabled: modifiersCount > 0, callback: () => {
4599
- this._cleanModifiers();
4600
- }});
4601
- options.unshift({ text: `Agregar modificador`, enabled: modifiersCount < modifiers.length, callback: () => {
4602
- this._addModifier();
4603
- }});
4604
- },
4605
-
4606
- mutationToDom: function() {
4607
- var container = document.createElement("mutation");
4608
- container.setAttribute("modifierscount", getModifierValues(this).length.toString());
4609
- return container;
4610
- },
4611
-
4612
- domToMutation: function(xmlElement) {
4613
- const $modifiersCount = xmlElement.getAttribute("modifierscount");
4614
- if ($modifiersCount) {
4615
- const count = parseInt($modifiersCount);
4616
- for (var i = 0; i < count; i++)
4617
- this._addModifier();
4618
- }
4619
-
4620
- setTimeout(() => {
4621
- updateModifierMenuGenerators(this);
4622
- }, 0);
4623
- },
4624
-
4625
- _addModifier() {
4626
- const availableModifiers = getAvailableModifiers(this);
4627
-
4628
- const self = this;
4629
- const id = getModifierValues(this).length + 1;
4630
- const labelName = "l" + id;
4631
- const dropdownName = "d" + id;
4632
-
4633
- getModifiersInput(this).appendField("+").appendField(new Blockly.FieldDropdown(availableModifiers, (newValue) => {
4634
- setTimeout(() => {
4635
- updateModifierMenuGenerators(self, dropdownName)
4636
- }, 0);
4637
- }));
4638
-
4639
- const addedFields = getModifierFields(this).slice(-2);
4640
- addedFields[0].name = labelName;
4641
- addedFields[1].name = dropdownName;
4642
-
4643
- updateModifierMenuGenerators(this, dropdownName);
4644
- },
4645
-
4646
- _cleanModifiers() {
4647
- const fieldsToRemove = getModifierFields(this);
4648
-
4649
- for (var field of fieldsToRemove)
4650
- getModifiersInput(this).removeField(field.name);
4651
- }
4652
- }
4653
- };
4654
-
4655
- Blockly.Blocks.InteractiveLetterBinding = createInteractiveBinding("letra", [
4656
- 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'Ñ', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'
4657
- ].map(it => ({ code: it, name: it })));
4658
-
4659
- Blockly.Blocks.InteractiveNumberBinding = createInteractiveBinding("número", [
4660
- '1', '2', '3', '4', '5', '6', '7', '8', '9', '0'
4661
- ].map(it => ({ code: it, name: it })));
4662
-
4663
- Blockly.Blocks.InteractiveKeyBinding = createInteractiveBinding("tecla", [
4664
- { code: 'ARROW_LEFT', name: '←' },
4665
- { code: 'ARROW_RIGHT', name: '→' },
4666
- { code: 'ARROW_UP', name: '↑' },
4667
- { code: 'ARROW_DOWN', name: '↓' },
4668
- { code: 'MINUS', name: '-' },
4669
- { code: 'SPACE', name: 'Espacio' },
4670
- { code: 'ENTER', name: 'Enter' },
4671
- { code: 'TAB', name: 'Tab' },
4672
- { code: 'BACKSPACE', name: 'Borrar' },
4673
- { code: 'DELETE', name: 'Suprimir' },
4674
- { code: 'ESCAPE', name: 'Escape' }
4675
- ]);
4676
-
4677
- // ------------------------------------------------------
4678
- // Control de flujo de ejecucion:
4679
- // ------------------------------------------------------
4680
-
4681
- Blockly.Blocks.RepeticionSimple = {
4682
- init: function () {
4683
- this.jsonInit({
4684
- type: "Statement",
4685
- previousStatement: "Statement",
4686
- nextStatement: "Statement",
4687
- });
4688
-
4689
- this.setColour(Blockly.CUSTOM_COLORS.RepeticionSimple || Blockly.CUSTOM_COLORS.controlStructure);
4690
- this.appendValueInput('count')
4691
- .appendField('repetir');
4692
- this.appendDummyInput()
4693
- .appendField('veces');
4694
- this.appendStatementInput('block').setCheck(["Statement"]);
4695
- this.setInputsInline(true);
4696
- }
4697
- };
4698
-
4699
- Blockly.Blocks.RepeticionCondicional = {
4700
- init: function () {
4701
- this.jsonInit({
4702
- type: "Statement",
4703
- previousStatement: "Statement",
4704
- nextStatement: "Statement",
4705
- });
4706
-
4707
- this.setColour(Blockly.CUSTOM_COLORS.RepeticionCondicional || Blockly.CUSTOM_COLORS.controlStructure);
4708
- this.appendValueInput('condicion')
4709
- .setCheck('Bool')
4710
- .appendField('repetir hasta que');
4711
- this.appendStatementInput('block').setCheck(["Statement"]);
4712
- this.setInputsInline(true);
4713
- }
4714
- };
4715
-
4716
- Blockly.Blocks.AlternativaSimple = {
4717
- init: function () {
4718
- this.jsonInit({
4719
- type: "Statement",
4720
- previousStatement: "Statement",
4721
- nextStatement: "Statement",
4722
- });
4723
-
4724
- this.setColour(Blockly.CUSTOM_COLORS.AlternativaSimple || Blockly.CUSTOM_COLORS.controlStructure);
4725
- this.appendValueInput('condicion')
4726
- .appendField(Blockly.Msg["CONTROLS_IF_MSG_IF"]);
4727
- this.appendStatementInput('block').setCheck(["Statement"]);
4728
- this.setInputsInline(true);
4729
- }
4730
- };
4731
-
4732
- Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "si no";
4733
- Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "si no, si";
4734
- Blockly.Msg["CONTROLS_IF_MSG_IF"] = "si";
4735
- Blockly.Msg["CONTROLS_IF_MSG_THEN"] = "";
4736
- delete Blockly.Constants.Logic.CONTROLS_IF_MUTATOR_MIXIN.compose;
4737
- delete Blockly.Constants.Logic.CONTROLS_IF_MUTATOR_MIXIN.decompose;
4738
- Blockly.Constants.Logic.CONTROLS_IF_MUTATOR_MIXIN.updateShape_ = function() {
4739
- // Delete everything.
4740
- if (this.getInput('block2')) {
4741
- this.removeInput('block2');
4742
- }
4743
- var i = 1;
4744
- while (this.getInput('IF' + i)) {
4745
- this.removeInput('IF' + i);
4746
- this.removeInput('DO' + i);
4747
- i++;
4748
- }
4749
- // Rebuild block.
4750
- for (var i = 1; i <= this.elseifCount_; i++) {
4751
- this.appendValueInput('IF' + i)
4752
- .appendField(Blockly.Msg.CONTROLS_IF_MSG_ELSEIF);
4753
- this.appendStatementInput('DO' + i)
4754
- .setCheck(["Statement"])
4755
- }
4756
- if (this.elseCount_) {
4757
- this.appendStatementInput('block2')
4758
- .setCheck(["Statement"])
4759
- .appendField(Blockly.Msg.CONTROLS_IF_MSG_ELSE);
4760
- }
4761
- };
4762
- Blockly.Extensions.registerMutator(
4763
- "controls_if_mutator_without_ui",
4764
- Blockly.Constants.Logic.CONTROLS_IF_MUTATOR_MIXIN,
4765
- null,
4766
- []
4767
- );
4768
-
4769
- Blockly.Blocks.AlternativaCompleta = {
4770
- init: function () {
4771
- this.jsonInit({
4772
- "type": "Statement",
4773
- "previousStatement": "Statement",
4774
- "nextStatement": "Statement",
4775
- "message0": "%{BKY_CONTROLS_IF_MSG_IF} %1",
4776
- "args0": [
4777
- {
4778
- "type": "input_value",
4779
- "name": "condicion"
4780
- }
4781
- ],
4782
- "message1": "%{BKY_CONTROLS_IF_MSG_THEN} %1",
4783
- "args1": [
4784
- {
4785
- "type": "input_statement",
4786
- "name": "block1",
4787
- "check": ["Statement"]
4788
- }
4789
- ],
4790
- "colour": "%{BKY_LOGIC_HUE}",
4791
- "helpUrl": "%{BKY_CONTROLS_IF_HELPURL}",
4792
- "mutator": "controls_if_mutator_without_ui",
4793
- "extensions": ["controls_if_tooltip"]
4794
- });
4795
-
4796
- this.setColour(Blockly.CUSTOM_COLORS.AlternativaCompleta || Blockly.CUSTOM_COLORS.controlStructure);
4797
- this.setInputsInline(true);
4798
-
4799
- this.elseCount_++;
4800
- this.updateShape_();
4801
- },
4802
- customContextMenu: function(options) {
4803
- options.unshift({ text: `Limpiar ramas 'si no, si'`, enabled: true, callback: () => {
4804
- this.elseifCount_ = 0;
4805
-
4806
- this.updateShape_();
4807
- }});
4808
-
4809
- options.unshift({ text: `Agregar 'si no, si'`, enabled: true, callback: () => {
4810
- this.elseifCount_++;
4811
-
4812
- const valueConnections = [null];
4813
- const statementConnections = [null];
4814
- const elseStatementConnection = this.getInput("block2").connection.targetConnection;
4815
- let k;
4816
- let input;
4817
-
4818
- k = 1;
4819
- while (input = this.getInput("IF" + k)) {
4820
- valueConnections.push(input.connection.targetConnection);
4821
- k++;
4822
- }
4823
-
4824
- k = 1;
4825
- while (input = this.getInput("DO" + k)) {
4826
- statementConnections.push(input.connection.targetConnection);
4827
- k++;
4828
- }
4829
-
4830
- this.updateShape_();
4831
-
4832
- // Reconnect any child blocks.
4833
- for (var i = 1; i <= this.elseifCount_; i++) {
4834
- Blockly.Mutator.reconnect(valueConnections[i], this, 'IF' + i);
4835
- Blockly.Mutator.reconnect(statementConnections[i], this, 'DO' + i);
4836
- }
4837
- Blockly.Mutator.reconnect(elseStatementConnection, this, 'block2');
4838
- }});
4839
- }
4840
- };
4841
4345
 
4842
4346
  // ------------------------------------------------------
4843
4347
  // Comandos:
@@ -4861,7 +4365,7 @@ Blockly.Blocks.fact1 = {
4861
4365
  name: 'PrimerIndividuo'
4862
4366
  }
4863
4367
  ],
4864
- colour: Blockly.CUSTOM_COLORS.Fact || Blockly.CUSTOM_COLORS.primitiveCommand,
4368
+ colour: Blockly.CUSTOM_COLORS.Fact,
4865
4369
  tooltip: 'Es una verdad',
4866
4370
  inputsInline: true
4867
4371
  });
@@ -4890,7 +4394,7 @@ Blockly.Blocks.fact2 = {
4890
4394
  name: 'SegundoIndividuo'
4891
4395
  }
4892
4396
  ],
4893
- colour: Blockly.CUSTOM_COLORS.Fact || Blockly.CUSTOM_COLORS.primitiveCommand,
4397
+ colour: Blockly.CUSTOM_COLORS.Fact,
4894
4398
  tooltip: 'Es una verdad',
4895
4399
  inputsInline: true
4896
4400
  });
@@ -4923,7 +4427,7 @@ Blockly.Blocks.fact3 = {
4923
4427
  name: 'TerceraCondicion'
4924
4428
  }
4925
4429
  ],
4926
- colour: Blockly.CUSTOM_COLORS.Fact || Blockly.CUSTOM_COLORS.primitiveCommand,
4430
+ colour: Blockly.CUSTOM_COLORS.Fact,
4927
4431
  tooltip: 'Es una verdad',
4928
4432
  inputsInline: true
4929
4433
  });
@@ -4943,7 +4447,7 @@ Blockly.Blocks.not = {
4943
4447
  name: 'PrimeraCondicion'
4944
4448
  }
4945
4449
  ],
4946
- colour: Blockly.CUSTOM_COLORS.Not || Blockly.CUSTOM_COLORS.primitiveCommand,
4450
+ colour: Blockly.CUSTOM_COLORS.Not,
4947
4451
  tooltip: 'Niega la condición',
4948
4452
  inputsInline: true
4949
4453
  });
@@ -4967,111 +4471,13 @@ Blockly.Blocks.forall = {
4967
4471
  name: 'SegundaCondicion'
4968
4472
  }
4969
4473
  ],
4970
- colour: Blockly.CUSTOM_COLORS.ForAll || Blockly.CUSTOM_COLORS.primitiveCommand,
4474
+ colour: Blockly.CUSTOM_COLORS.ForAll,
4971
4475
  tooltip: 'Para todo lo primero, se cumple lo segundo.',
4972
4476
  inputsInline: true
4973
4477
  });
4974
4478
  }
4975
4479
  };
4976
4480
 
4977
- Blockly.Blocks.Sacar= {
4978
- init: function () {
4979
- this.jsonInit({
4980
- type: "Statement",
4981
- previousStatement: "Statement",
4982
- nextStatement: "Statement",
4983
- message0: 'Sacar %1',
4984
- args0: [
4985
- {
4986
- type: 'input_value',
4987
- name: 'COLOR'
4988
- }
4989
- ],
4990
- colour: Blockly.CUSTOM_COLORS.Sacar || Blockly.CUSTOM_COLORS.primitiveCommand,
4991
- tooltip: 'Sacar color de casillero.',
4992
- inputsInline: true
4993
- });
4994
- }
4995
- };
4996
-
4997
- Blockly.Blocks.Mover = {
4998
- init: function () {
4999
- this.jsonInit({
5000
- type: "Statement",
5001
- previousStatement: "Statement",
5002
- nextStatement: "Statement",
5003
- message0: 'Mover %1',
5004
- args0: [
5005
- {
5006
- type: 'input_value',
5007
- name: 'DIRECCION'
5008
- }
5009
- ],
5010
- colour: Blockly.CUSTOM_COLORS.Mover || Blockly.CUSTOM_COLORS.primitiveCommand,
5011
- tooltip: 'Mover en una dirección.',
5012
- inputsInline: true
5013
- });
5014
- }
5015
- };
5016
-
5017
- Blockly.Blocks.IrAlBorde = {
5018
- init: function () {
5019
- this.jsonInit({
5020
- type: "Statement",
5021
- previousStatement: "Statement",
5022
- nextStatement: "Statement",
5023
- message0: 'Ir al borde %1',
5024
- args0: [
5025
- {
5026
- type: 'input_value',
5027
- name: 'DIRECCION'
5028
- }
5029
- ],
5030
- colour: Blockly.CUSTOM_COLORS.IrAlBorde || Blockly.CUSTOM_COLORS.primitiveCommand,
5031
- tooltip: 'Ir al borde del tablero.',
5032
- inputsInline: true
5033
- });
5034
- }
5035
- };
5036
-
5037
- Blockly.Blocks.VaciarTablero = {
5038
- init: function () {
5039
- this.jsonInit({
5040
- type: "Statement",
5041
- previousStatement: "Statement",
5042
- nextStatement: "Statement",
5043
- message0: 'Vaciar tablero',
5044
- colour: Blockly.CUSTOM_COLORS.VaciarTablero || Blockly.CUSTOM_COLORS.primitiveCommand,
5045
- tooltip: 'Vaciar el tablero.',
5046
- inputsInline: true
5047
- });
5048
- }
5049
- };
5050
-
5051
- Blockly.Blocks.BOOM = {
5052
- init: function () {
5053
- this.jsonInit({
5054
- "type": "Statement",
5055
- "previousStatement": "Statement",
5056
- "nextStatement": "Statement",
5057
- "lastDummyAlign0": "RIGHT",
5058
- "message0": "Hacer ¡BOOM! porque: %1 %2",
5059
- "args0": [
5060
- {
5061
- "type": "input_dummy"
5062
- },
5063
- {
5064
- "type": "field_input",
5065
- "name": "boomDescription",
5066
- "text": "Ingresar motivo..."
5067
- }
5068
- ],
5069
- "inputsInline": false,
5070
- "colour": Blockly.CUSTOM_COLORS.BOOM || Blockly.CUSTOM_COLORS.primitiveCommand,
5071
- "tooltip": "Este comando hace que estalle todo."
5072
- });
5073
- }
5074
- };
5075
4481
 
5076
4482
  Blockly.Blocks.makeShadowEventListener = function(event){
5077
4483
  if(event.blockId == this.id && event.newParentId){
@@ -5167,94 +4573,7 @@ function createLiteralSelectorBlock(type,values){
5167
4573
 
5168
4574
  Blockly.Blocks.IndividuoSelector = createLiteralSelectorBlock('Individuo');
5169
4575
  Blockly.Blocks.VariableSelector = createLiteralSelectorBlock('Variable');
5170
- Blockly.Blocks.ColorSelector = createLiteralSelectorBlock('Color',['Rojo','Verde','Negro','Azul']);
5171
- Blockly.Blocks.DireccionSelector = createLiteralSelectorBlock('Direccion',['Este','Oeste','Norte','Sur']);
5172
- Blockly.Blocks.BoolSelector = createLiteralSelectorBlock('Bool',['True','False']);
5173
4576
 
5174
- function createSingleParameterExpressionBlock(blockText,returnType, colorType = "operator"){
5175
- return {
5176
- init: function () {
5177
- this.jsonInit({
5178
- message0: blockText + ' %1',
5179
- args0: [
5180
- {
5181
- type: 'input_value',
5182
- name: 'VALUE'
5183
- }
5184
- ],
5185
- colour: Blockly.CUSTOM_COLORS[this.type] || Blockly.CUSTOM_COLORS[colorType],
5186
- inputsInline: true,
5187
- output: returnType
5188
- })
5189
- }
5190
- };
5191
- }
5192
-
5193
- Blockly.Blocks.hayBolitas = createSingleParameterExpressionBlock('hay bolitas','Bool', "primitiveExpression");
5194
- Blockly.Blocks.puedeMover = createSingleParameterExpressionBlock('puede mover','Bool', "primitiveExpression");
5195
- Blockly.Blocks.nroBolitas = createSingleParameterExpressionBlock('numero de bolitas','Number', "primitiveExpression");
5196
-
5197
- // ------------------------------------------------------
5198
- // Operaciones:
5199
- // ------------------------------------------------------
5200
-
5201
- Blockly.Blocks.OperadorDeComparacion = {
5202
- init: function () {
5203
- this.jsonInit({
5204
- message0: '%1 %2 %3 %4',
5205
- args0: [
5206
- {
5207
- type: 'input_value',
5208
- name: 'arg1'
5209
- },
5210
- {
5211
- type: 'field_dropdown',
5212
- name: 'RELATION',
5213
- options: [['==', '=='], ['/=', '/='], ['<=', '<='], ['<', '<'], ['>=', '>='], ['>', '>']]
5214
- },
5215
- {
5216
- type: 'input_dummy'
5217
- },
5218
- {
5219
- type: 'input_value',
5220
- name: 'arg2'
5221
- }
5222
- ],
5223
- colour: Blockly.CUSTOM_COLORS.OperadorDeComparacion || Blockly.CUSTOM_COLORS.operator,
5224
- inputsInline: false,
5225
- output: 'Bool'
5226
- });
5227
- }
5228
- };
5229
-
5230
- Blockly.Blocks.OperadorNumerico = {
5231
- init: function () {
5232
- this.jsonInit({
5233
- message0: '%1 %2 %3 %4',
5234
- args0: [
5235
- {
5236
- type: 'input_value',
5237
- name: 'arg1'
5238
- },
5239
- {
5240
- type: 'field_dropdown',
5241
- name: 'OPERATOR',
5242
- options: [['+', '+'], ['-', '-'], ['*', '*'], ['div', 'div'], ['mod', 'mod'], ['^', '^']]
5243
- },
5244
- {
5245
- type: 'input_dummy'
5246
- },
5247
- {
5248
- type: 'input_value',
5249
- name: 'arg2'
5250
- }
5251
- ],
5252
- colour: Blockly.CUSTOM_COLORS.OperadorNumerico || Blockly.CUSTOM_COLORS.operator,
5253
- inputsInline: false,
5254
- output: 'Number'
5255
- });
5256
- }
5257
- };
5258
4577
 
5259
4578
  Blockly.Blocks.OperadorLogico = {
5260
4579
  init: function () {
@@ -5392,9 +4711,15 @@ Blockly.Blocks.variables_get = {
5392
4711
  }
5393
4712
  };
5394
4713
 
5395
- Blockly.Blocks.siguiente = createSingleParameterExpressionBlock('siguiente','*');
5396
- Blockly.Blocks.previo = createSingleParameterExpressionBlock('previo','*');
5397
- Blockly.Blocks.opuesto = createSingleParameterExpressionBlock('opuesto','*');
4714
+
4715
+
4716
+
4717
+
4718
+
4719
+
4720
+
4721
+ //Deberiamos immplementar una sanitizacion par ablockly, asi se esta haciendo en gobstone
4722
+
5398
4723
 
5399
4724
 
5400
4725
  // Necesario para sanitizar nombres de procedimientos.
@@ -5501,6 +4826,13 @@ function uncapitalize(text) {
5501
4826
  }
5502
4827
  return text.charAt(0).toLowerCase() + text.substr(1);
5503
4828
  }
4829
+
4830
+ function capitalize(text) {
4831
+ if(!text || typeof text !== "string") {
4832
+ return '';
4833
+ }
4834
+ return text.charAt(0).toUpperCase() + text.substr(1);
4835
+ }
5504
4836
  /**
5505
4837
  * Retorna la funcion que genera el codigo para un bloque tipo PRED(arg1, arg2, ...)
5506
4838
  */
@@ -5510,7 +4842,7 @@ function factBlockCodeGenerator(procName, args, newLine) {
5510
4842
  var sep = '';
5511
4843
  args.forEach(function (arg, index) {
5512
4844
  var childBlock = block.childBlocks_[index]
5513
- code += sep + (uncapitalize(childBlock.getFieldValue('Individuo')) || childBlock.getFieldValue('Variable'));
4845
+ code += sep + (uncapitalize(childBlock.getFieldValue('Individuo')) || capitalize(childBlock.getFieldValue('Variable')));
5514
4846
  sep = ', ';
5515
4847
  });
5516
4848
  code += newLine ? ').\n' : ').';
@@ -5545,7 +4877,6 @@ function notBlockCodeGenerator(procName, args, newLine) {
5545
4877
  return function (block) {
5546
4878
  var code = "\n" + procName + '(';
5547
4879
  var sep = '';
5548
- debugger;
5549
4880
  args.forEach(function (arg) {
5550
4881
  var statementCode = Blockly.PrologLanguage.statementToCode(block, arg, false);
5551
4882
  if(statementCode.split("\n").length > 2) {
@@ -5562,30 +4893,7 @@ function notBlockCodeGenerator(procName, args, newLine) {
5562
4893
  // return callGenerator(procName, args, true);
5563
4894
  }
5564
4895
  window.forallBlockCodeGenerator = forallBlockCodeGenerator;
5565
- /**
5566
- * Retorna la funcion que genera el codigo para un bloque tipo function(arg1, arg2, ...)
5567
- */
5568
- function functionBlockCodeGenerator(procName, args) {
5569
- return callGenerator(procName, args, false, Blockly.PrologLanguage.ORDER_FUNCTION_CALL);
5570
- }
5571
- window.functionBlockCodeGenerator = functionBlockCodeGenerator;
5572
4896
 
5573
- /**
5574
- * Retorna la funcion que genera el codigo para un bloque tipo Expr(arg1, arg2, ...)
5575
- */
5576
- function exprParamsBlockCodeGenerator(expr, args) {
5577
- return callGenerator(expr, args, false, Blockly.PrologLanguage.ORDER_FUNCTION_CALL);
5578
- }
5579
-
5580
- /**
5581
- * Retorna la funcion que genera el codigo para un bloque tipo selector de literales
5582
- */
5583
-
5584
- function literalSelectorBlockCodeGenerator(type) {
5585
- return function(block) {
5586
- return [block.getFieldValue(type), Blockly.PrologLanguage.ORDER_ATOMIC];
5587
- };
5588
- }
5589
4897
 
5590
4898
  function individuoSelectorBlockCodeGenerator(type) {
5591
4899
  return function(block) {
@@ -5801,15 +5109,9 @@ Blockly.PrologLanguage.fact3 = factBlockCodeGenerator('fact', ['PrimerIndividuo'
5801
5109
  Blockly.PrologLanguage.forall = forallBlockCodeGenerator('forall', ['PrimeraCondicion', 'SegundaCondicion']);
5802
5110
  Blockly.PrologLanguage.not = notBlockCodeGenerator('not', ['PrimeraCondicion']);
5803
5111
 
5804
- Blockly.PrologLanguage.ComandoCompletar = b => 'BOOM("El programa todavía no está completo")\n';
5805
- Blockly.PrologLanguage.ExpresionCompletar = b => ['boom("El programa todavía no está completo")',Blockly.PrologLanguage.ORDER_FUNCTION_CALL];
5806
- Blockly.PrologLanguage.AsociacionDeTeclaCompletar = b => ''
5807
5112
 
5808
5113
  Blockly.PrologLanguage.IndividuoSelector = individuoSelectorBlockCodeGenerator('Individuo');
5809
5114
  Blockly.PrologLanguage.VariableSelector = variableSelectorBlockCodeGenerator('Variable');
5810
- Blockly.PrologLanguage.ColorSelector = literalSelectorBlockCodeGenerator('Color');
5811
- Blockly.PrologLanguage.DireccionSelector = literalSelectorBlockCodeGenerator('Direccion');
5812
- Blockly.PrologLanguage.BoolSelector = literalSelectorBlockCodeGenerator('Bool');
5813
5115
 
5814
5116
  Blockly.PrologLanguage.OperadorDeComparacion = function (block) {
5815
5117
  var code =
@@ -5858,9 +5160,6 @@ Blockly.PrologLanguage.OperadorLogico = function(block) {
5858
5160
  return [code, order];
5859
5161
  };
5860
5162
 
5861
- Blockly.PrologLanguage.siguiente = exprParamsBlockCodeGenerator('siguiente',['VALUE']);
5862
- Blockly.PrologLanguage.previo = exprParamsBlockCodeGenerator('previo',['VALUE']);
5863
- Blockly.PrologLanguage.opuesto = exprParamsBlockCodeGenerator('opuesto',['VALUE']);
5864
5163
 
5865
5164
  Blockly.PrologLanguage.math_number = function (block) {
5866
5165
  // Numeric value.
@@ -5874,153 +5173,34 @@ Blockly.PrologLanguage.Program = function (block) {
5874
5173
  return codigo;
5875
5174
  };
5876
5175
 
5877
- Blockly.PrologLanguage.InteractiveProgram = function (block) {
5878
- let program = Blockly.PrologLanguage.statementToCode(block, 'interactiveprogram');
5879
-
5880
- let init = '';
5881
- if (block.$init)
5882
- init = ` INIT -> {\n${Blockly.PrologLanguage.statementToCode(block, 'init')} }\n`;
5883
-
5884
- let timeout = '';
5885
- if (block.$timeout)
5886
- timeout = ` TIMEOUT(${block.$timeout}) -> {\n${Blockly.PrologLanguage.statementToCode(block, 'timeout')} }\n`;
5887
-
5888
- let codigo = `interactive program {\n${init}${program}${timeout}}\n`;
5889
- return codigo;
5890
- };
5891
-
5892
- Blockly.PrologLanguage.InteractiveLetterBinding = function (block) {
5893
- let key = block.getFieldValue('InteractiveBindingDropdownKey');
5894
-
5895
- const order = ["CTRL", "ALT", "SHIFT"];
5896
- const modifier = block.inputList[1]
5897
- .fieldRow
5898
- .slice(2)
5899
- .filter(it => it.constructor === Blockly.FieldDropdown)
5900
- .map(it => order.indexOf(it.getValue()))
5901
- .sort()
5902
- .map(it => order[it])
5903
- .join("_");
5904
-
5905
- if (modifier !== "")
5906
- key = modifier + "_" + key;
5907
-
5908
- const code = Blockly.PrologLanguage.statementToCode(block, 'block');
5909
-
5910
- return `K_${key} -> {\n${code}}\n`;
5911
- };
5912
- Blockly.PrologLanguage.InteractiveNumberBinding = Blockly.PrologLanguage.InteractiveLetterBinding;
5913
- Blockly.PrologLanguage.InteractiveKeyBinding = Blockly.PrologLanguage.InteractiveLetterBinding;
5914
-
5915
- Blockly.PrologLanguage.RepeticionSimple = function (block) {
5916
- let body = Blockly.PrologLanguage.statementToCode(block, 'block');
5917
- var count = Blockly.PrologLanguage.valueToCode(block, 'count',
5918
- Blockly.PrologLanguage.ORDER_NONE) || '';
5919
-
5920
- let codigo = `repeat(${count}) {\n${body}}\n`;
5921
- return codigo;
5922
- };
5923
-
5924
- Blockly.PrologLanguage.RepeticionCondicional = function (block) {
5925
- let body = Blockly.PrologLanguage.statementToCode(block, 'block');
5926
- var condicion = Blockly.PrologLanguage.valueToCode(block, 'condicion',
5927
- Blockly.PrologLanguage.ORDER_NONE) || '';
5928
-
5929
- let codigo = `while (not (${condicion})) {\n${body}}\n`;
5930
- return codigo;
5931
- };
5932
-
5933
- Blockly.PrologLanguage.AlternativaSimple = function (block) {
5934
- let body = Blockly.PrologLanguage.statementToCode(block, 'block');
5935
- var condicion = Blockly.PrologLanguage.valueToCode(block, 'condicion',
5936
- Blockly.PrologLanguage.ORDER_NONE) || '';
5937
-
5938
- let codigo = `if (${condicion}) {\n${body}}\n`;
5939
- return codigo;
5940
- };
5941
-
5942
- Blockly.PrologLanguage.AlternativaCompleta = function (block) {
5943
- const elseIfCount = block.elseifCount_;
5944
- let body1 = Blockly.PrologLanguage.statementToCode(block, 'block1');
5945
- let body2 = Blockly.PrologLanguage.statementToCode(block, 'block2');
5946
-
5947
- const elseIfBodies = Array.apply(null, Array(elseIfCount))
5948
- .map(function (_, i) {
5949
- const id = i + 1;
5950
- return {
5951
- condition: Blockly.PrologLanguage.valueToCode(block, "IF" + id,
5952
- Blockly.PrologLanguage.ORDER_NONE),
5953
- body: Blockly.PrologLanguage.statementToCode(block, "DO" + id)
5954
- };
5955
- }).map(function({ condition, body }) {
5956
- return ` elseif (${condition}) {\n${body}}`;
5957
- }).join("");
5958
-
5959
- var condicion = Blockly.PrologLanguage.valueToCode(block, 'condicion',
5960
- Blockly.PrologLanguage.ORDER_NONE) || '';
5961
-
5962
- let codigo = `if (${condicion}) {\n${body1}}${elseIfBodies} else {\n${body2}}\n`;
5963
- return codigo;
5964
- };
5965
-
5966
- Blockly.PrologLanguage.hayBolitas = exprParamsBlockCodeGenerator('hayBolitas', ['VALUE']);
5967
- Blockly.PrologLanguage.nroBolitas = exprParamsBlockCodeGenerator('nroBolitas', ['VALUE']);
5968
- Blockly.PrologLanguage.puedeMover = exprParamsBlockCodeGenerator('puedeMover', ['VALUE']);
5969
-
5970
5176
  var formatCallName = function (name, capitalizeFirst, type = Blockly.PROCEDURE_CATEGORY_NAME) {
5971
- if(!name) throw new Error(type + " name is empty");
5972
- var safe = Blockly.PrologLanguage.variableDB_.getName(name, type);
5973
- return (capitalizeFirst ? safe[0].toUpperCase() : safe[0].toLowerCase()) + safe.slice(1);
5177
+ if(!name) throw new Error(type + " name is empty");
5178
+ var safe = Blockly.PrologLanguage.variableDB_.getName(name, type);
5179
+ return (capitalizeFirst ? safe[0].toUpperCase() : safe[0].toLowerCase()) + safe.slice(1);
5974
5180
  };
5975
5181
 
5976
5182
  var makeParameterList = function (block) {
5977
- return block.arguments_.join(', ');
5183
+ return block.arguments_.join(', ');
5978
5184
  };
5979
5185
 
5980
5186
  Blockly.PrologLanguage.procedures_defnoreturn = function (block) {
5981
- var procName = formatCallName(block.getFieldValue('NAME'),false);
5982
- var name = procName;
5983
- while(Number(name.slice(-1))) {
5984
- name = name.slice(0, -1);
5985
- }
5986
- var body_lines = Blockly.PrologLanguage.statementToCode(block, 'STACK');
5987
- var body2 = body_lines.split("\n").slice(1).join(",\n") + '.';
5988
- var body_final = body2.replace(/\.\./g, ".").replace(/\.,/g, ",");
5989
-
5990
- var code = name + '(' + makeParameterList(block) + ')' + ':- \n' + body_final + '\n';
5991
-
5992
- code = Blockly.PrologLanguage.scrub_(block, code);
5993
- Blockly.PrologLanguage.definitions_[procName] = code;
5994
-
5995
- return null;
5996
- };
5997
-
5998
- Blockly.PrologLanguage.procedures_defnoreturn_nobody = function (block) {
5999
- var name = formatCallName(block.getFieldValue('NAME'),false);
6000
- var code = name + '(' + makeParameterList(block) + ').';
6001
- code = Blockly.PrologLanguage.scrub_(block, code);
6002
- Blockly.PrologLanguage.definitions_[name] = code;
6003
- return null;
6004
- };
6005
-
6006
- Blockly.PrologLanguage.procedures_defreturn = function (block) {
6007
- var name = formatCallName(block.getFieldValue('NAME'),false);
6008
- var body = Blockly.PrologLanguage.statementToCode(block, 'STACK');
6009
- var returnValue = Blockly.PrologLanguage.valueToCode(block, 'RETURN');
5187
+ var procName = formatCallName(block.getFieldValue('NAME'),false);
5188
+ var name = procName;
5189
+ while(Number(name.slice(-1))) {
5190
+ name = name.slice(0, -1);
5191
+ }
5192
+ var body_lines = Blockly.PrologLanguage.statementToCode(block, 'STACK');
5193
+ var body2 = body_lines.split("\n").slice(1).join(",\n") + '.';
5194
+ var body_final = body2.replace(/\.\./g, ".").replace(/\.,/g, ",");
6010
5195
 
6011
- var code = 'function ' + name + '(' + makeParameterList(block) + ') {\n' +
6012
- body + ' return (' + returnValue + ')\n}\n';
5196
+ var code = name + '(' + makeParameterList(block) + ')' + ':- \n' + body_final + '\n';
6013
5197
 
6014
- code = Blockly.PrologLanguage.scrub_(block, code);
6015
- Blockly.PrologLanguage.definitions_[name] = code;
5198
+ code = Blockly.PrologLanguage.scrub_(block, code);
5199
+ Blockly.PrologLanguage.definitions_[procName] = code;
6016
5200
 
6017
- return null;
5201
+ return null;
6018
5202
  };
6019
5203
 
6020
- Blockly.PrologLanguage.procedures_defnoreturnnoparams = Blockly.PrologLanguage.procedures_defnoreturn;
6021
- Blockly.PrologLanguage.procedures_defreturnsimplewithparams = Blockly.PrologLanguage.procedures_defreturn;
6022
- Blockly.PrologLanguage.procedures_defreturnsimple = Blockly.PrologLanguage.procedures_defreturn;
6023
-
6024
5204
  var predicateCall = function(block, capitalizeFirst, newLine) {
6025
5205
  var procName = formatCallName(block.getFieldValue('NAME'),false);
6026
5206
  var args = [];
@@ -6032,17 +5212,6 @@ var predicateCall = function(block, capitalizeFirst, newLine) {
6032
5212
  return code;
6033
5213
  }
6034
5214
 
6035
- Blockly.PrologLanguage.procedures_callnoreturn = function (block) {
6036
- return predicateCall(block, true, true);
6037
- };
6038
- Blockly.PrologLanguage.procedures_callreturn = function (block) {
6039
- return [predicateCall(block, false), Blockly.PrologLanguage.ORDER_FUNCTION_CALL];
6040
- };
6041
-
6042
- Blockly.PrologLanguage.procedures_callnoreturnnoparams = Blockly.PrologLanguage.procedures_callnoreturn;
6043
- Blockly.PrologLanguage.procedures_callreturnsimplewithparams = Blockly.PrologLanguage.procedures_callreturn;
6044
- Blockly.PrologLanguage.procedures_callreturnsimple = Blockly.PrologLanguage.procedures_callreturn;
6045
-
6046
5215
  Blockly.PrologLanguage.variables_get = function (block) {
6047
5216
  var code = formatCallName(block.getFieldValue('VAR'),false,Blockly.VARIABLE_CATEGORY_NAME);
6048
5217
  return [code, Blockly.PrologLanguage.ORDER_ATOMIC];
@@ -6050,45 +5219,19 @@ Blockly.PrologLanguage.variables_get = function (block) {
6050
5219
 
6051
5220
  Blockly.PrologLanguage.Asignacion = function(block) {
6052
5221
  var varValue = Blockly.PrologLanguage.valueToCode(block, 'varValue', Blockly.PrologLanguage.ORDER_ASSIGNMENT);
6053
- var code = formatCallName(block.getFieldValue('varName'),false,Blockly.VARIABLE_CATEGORY_NAME) +
5222
+ var varName = formatCallName(block.getFieldValue('varName'),false,Blockly.VARIABLE_CATEGORY_NAME);
5223
+ var code = capitalize(varName) +
6054
5224
  ' is ' + varValue;
6055
5225
  return "\n" + code;
6056
5226
  };
6057
5227
  </script>
6058
5228
  <script>Blockly.PrologLanguage.blockIDAliases = {
6059
- "ComandosPrimitivos": "Comandos primitivos",
6060
- "ProcedimientosPrimitivos": "Procedimientos primitivos",
6061
- "MisProcedimientos": "Mis procedimientos",
6062
- "ExpresionesPrimitivas": "Expresiones primitivas",
6063
- "FuncionesPrimitivas": "Funciones primitivas",
6064
5229
  "CategoriaAsignacion":"Asignación",
6065
5230
  "Color":"ColorSelector",
6066
5231
  "Individuo":"IndividuoSelector",
6067
5232
  "Variable":"VariableSelector",
6068
- "Direccion":"DireccionSelector",
6069
- "Numero":"math_number",
6070
- "Booleano":"BoolSelector",
6071
- "ExpresionesPrimitivas": "Expresiones primitivas",
6072
- "FuncionesPrimitivas": "Funciones primitivas",
6073
- "MisFunciones": "Mis funciones",
6074
5233
  "OperadorDeNegacion": "not",
6075
- "OperadorSiguiente": "siguiente",
6076
- "OperadorPrevio": "previo",
6077
- "OperadorOpuesto": "opuesto",
6078
- "DefinicionesDeProgramas": "Programas",
6079
- "DefinicionDeProgramaComun": "Program",
6080
- "DefinicionDeProgramaInteractivo": "InteractiveProgram",
6081
- "DefinicionDeAsociacionDeTeclaLetra": "InteractiveLetterBinding",
6082
- "DefinicionDeAsociacionDeTeclaNumero": "InteractiveNumberBinding",
6083
- "DefinicionDeAsociacionDeTeclaEspecial": "InteractiveKeyBinding",
6084
- "DefinicionesDeProcedimientos": "Procedimientos",
6085
- "DefinicionDeProcedimientoSimple": "procedures_defnoreturnnoparams",
6086
- "DefinicionDeProcedimientoParametrizado": "procedures_defnoreturn",
6087
- "DefinicionesDeFunciones": "Funciones",
6088
- "DefinicionDeFuncionSimple": "procedures_defreturnsimple",
6089
- "DefinicionDeFuncionSimpleParametrizada": "procedures_defreturnsimplewithparams",
6090
- "DefinicionDeFuncionParametrizada": "procedures_defreturn"
6091
- };
5234
+ };
6092
5235
 
6093
5236
  Blockly.PrologLanguage.aliasForBlockID = function(id){
6094
5237
  return this.blockIDAliases[id] || id;
@@ -1,5 +1,5 @@
1
1
  module Prolog
2
2
  module Blockly
3
- VERSION = "1.0.15"
3
+ VERSION = "1.0.16"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prolog-blockly
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.15
4
+ version: 1.0.16
5
5
  platform: ruby
6
6
  authors:
7
7
  - Agustin Pina
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-11-04 00:00:00.000000000 Z
11
+ date: 2018-11-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler