gobstones-blockly 0.17.0 → 0.18.0
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 +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
|