gobstones-blockly 0.17.0 → 0.18.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 +69 -11
- 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: feb2595a317dc38ed739f495938f3cc7fe2d635cec35dbcf81e2cebdd8def04d
|
4
|
+
data.tar.gz: 1ac9279dbfaeed5723d6d769b79c006078b9b676ed0a82aebd722ef2bc6fd614
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 62da51f613fc533c1c968558099f7e987972ab9c98a5c1543b1b0a719a48c1be990d6b7303d1799565e164d098a4971531c77eb064f30d02c092957f07e2f8fd
|
7
|
+
data.tar.gz: 34dbc8bf8b7ab184170a2a3de93685d27fc49a3e2d42d01866999292e11f19b7bea009728af7a658210e89ae53e07cbe5fa902e5c3a1bf7486206b548111f823
|
@@ -5071,6 +5071,20 @@ Blockly.GobstonesLanguage.addPragma = function(block, str){
|
|
5071
5071
|
// Gobstones pragma BEGIN_REGION should avoid char 'at' ( @ )
|
5072
5072
|
Blockly.utils.genUid.soup_ = Blockly.utils.genUid.soup_.replace(/@/g,"a");
|
5073
5073
|
|
5074
|
+
function getCustomTeacherDropdownValue(block) {
|
5075
|
+
try {
|
5076
|
+
const inputs = block.inputList;
|
5077
|
+
const lastInput = inputs[inputs.length - 1];
|
5078
|
+
const fields = lastInput.fieldRow;
|
5079
|
+
const lastField = fields[fields.length - 1];
|
5080
|
+
|
5081
|
+
if (lastField.name === 'custom_teacher_dropdown')
|
5082
|
+
return lastField.getValue();
|
5083
|
+
} catch(e) { // TODO: Sacar esto
|
5084
|
+
return null;
|
5085
|
+
}
|
5086
|
+
}
|
5087
|
+
|
5074
5088
|
/**
|
5075
5089
|
* Retorna la función que representa la llamada a un procedimiento o funcion F(arg1, arg2, ...)
|
5076
5090
|
* Importante: los arg son input values, no fields.
|
@@ -5080,8 +5094,13 @@ function callGenerator(name, args = [], newLine, order) {
|
|
5080
5094
|
var code = name + '(';
|
5081
5095
|
var sep = '';
|
5082
5096
|
args.forEach(function (arg) {
|
5083
|
-
|
5084
|
-
|
5097
|
+
const value = getCustomTeacherDropdownValue(block) || Blockly.GobstonesLanguage.valueToCode(
|
5098
|
+
block,
|
5099
|
+
arg,
|
5100
|
+
Blockly.GobstonesLanguage.ORDER_NONE
|
5101
|
+
);
|
5102
|
+
|
5103
|
+
code += sep + value;
|
5085
5104
|
sep = ', ';
|
5086
5105
|
});
|
5087
5106
|
code += newLine ? ')\n' : ')';
|
@@ -6118,6 +6137,17 @@ Blockly.ErrorInforming.CssContent = [
|
|
6118
6137
|
return name.split("_");
|
6119
6138
|
},
|
6120
6139
|
|
6140
|
+
_getDropdownOptions(definition) {
|
6141
|
+
const attributes = definition.attributes;
|
6142
|
+
|
6143
|
+
const dropdown = definition.attributes && definition.attributes.block_dropdown;
|
6144
|
+
const dropdownOptions = dropdown && dropdown.match(/\("\w+" *, *'[^']*'\)/g);
|
6145
|
+
return dropdownOptions && dropdownOptions.map((option) => {
|
6146
|
+
const parts = option.match(/^\("(\w+)" *, *'([^']*)'\)$/);
|
6147
|
+
return [parts[1], parts[2]];
|
6148
|
+
});
|
6149
|
+
},
|
6150
|
+
|
6121
6151
|
/**
|
6122
6152
|
* Define un bloque a partir de una definicion tipo Poner_En_
|
6123
6153
|
*/
|
@@ -6125,6 +6155,7 @@ Blockly.ErrorInforming.CssContent = [
|
|
6125
6155
|
const name = this._getPrimitiveName(definition);
|
6126
6156
|
const customName = definition.attributes && definition.attributes.block_name;
|
6127
6157
|
const icon = definition.attributes && definition.attributes.block_icon;
|
6158
|
+
const dropdownOptions = this._getDropdownOptions(definition);
|
6128
6159
|
|
6129
6160
|
const finalName = customName || name;
|
6130
6161
|
const parts = (customName ? this._getParts : this._getPartsByConvention.bind(this, true))
|
@@ -6145,11 +6176,24 @@ Blockly.ErrorInforming.CssContent = [
|
|
6145
6176
|
));
|
6146
6177
|
}
|
6147
6178
|
|
6148
|
-
|
6149
|
-
if(i == (parts.length - 1)) {
|
6150
|
-
|
6151
|
-
|
6152
|
-
|
6179
|
+
for (var i in parts) {
|
6180
|
+
if (i == (parts.length - 1)) {
|
6181
|
+
this.appendDummyInput().appendField(parts[i]);
|
6182
|
+
|
6183
|
+
if (dropdownOptions) {
|
6184
|
+
this.removeInput('arg1');
|
6185
|
+
this.jsonInit({
|
6186
|
+
message0: parts[i - 1] + " %1",
|
6187
|
+
args0: [
|
6188
|
+
{
|
6189
|
+
type: 'field_dropdown',
|
6190
|
+
name: "custom_teacher_dropdown",
|
6191
|
+
options: dropdownOptions
|
6192
|
+
}
|
6193
|
+
]
|
6194
|
+
});
|
6195
|
+
}
|
6196
|
+
} else {
|
6153
6197
|
this.appendValueInput('arg' + argsIndex).appendField(parts[i]);
|
6154
6198
|
argsIndex++;
|
6155
6199
|
}
|
@@ -6185,6 +6229,7 @@ Blockly.ErrorInforming.CssContent = [
|
|
6185
6229
|
const name = this._getPrimitiveName(definition);
|
6186
6230
|
const customName = definition.attributes && definition.attributes.block_name;
|
6187
6231
|
const icon = definition.attributes && definition.attributes.block_icon;
|
6232
|
+
const dropdownOptions = this._getDropdownOptions(definition);
|
6188
6233
|
|
6189
6234
|
const finalName = customName || name;
|
6190
6235
|
const parts = (customName ? this._getParts : this._getPartsByConvention.bind(this, false))
|
@@ -6205,11 +6250,24 @@ Blockly.ErrorInforming.CssContent = [
|
|
6205
6250
|
));
|
6206
6251
|
}
|
6207
6252
|
|
6208
|
-
for(var i in parts) {
|
6209
|
-
if(i == (parts.length - 1)) {
|
6253
|
+
for (var i in parts) {
|
6254
|
+
if (i == (parts.length - 1)) {
|
6210
6255
|
this.appendDummyInput().appendField(parts[i]);
|
6211
|
-
|
6212
|
-
|
6256
|
+
|
6257
|
+
if (dropdownOptions) {
|
6258
|
+
this.removeInput('arg1');
|
6259
|
+
this.jsonInit({
|
6260
|
+
message0: parts[i - 1] + " %1",
|
6261
|
+
args0: [
|
6262
|
+
{
|
6263
|
+
type: 'field_dropdown',
|
6264
|
+
name: "custom_teacher_dropdown",
|
6265
|
+
options: dropdownOptions
|
6266
|
+
}
|
6267
|
+
]
|
6268
|
+
});
|
6269
|
+
}
|
6270
|
+
} else {
|
6213
6271
|
this.appendValueInput('arg' + argsIndex).appendField(parts[i]);
|
6214
6272
|
argsIndex++;
|
6215
6273
|
}
|
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.18.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-06-
|
11
|
+
date: 2018-06-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|