gobstones-blockly 0.18.0 → 0.18.1
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 +68 -69
- 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: f16c1d9e0f8d7d1c45571bf145bee056a35f937074d518da0ec2e7acbb4d3763
|
4
|
+
data.tar.gz: ae42b6ed27a22e0b2c4f4aa38eb1e3da75dc5fd46b483e6031e64761c76416c7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8b813b850a0e7d8d98f08f1b8f4af3b721977f66193992d47ebf5b91c87eb46af34995646ae7470328527df0e02bbf604d1371b8434f38d0d28ca1dcc7f9b387
|
7
|
+
data.tar.gz: 12e3a730263d9360d216fe9c8fbbc932feb42ede7892f5d9ebae0378238a7e78a9c1eff9446c85781d7c5c9293998e5f0f73787ec12aaf2f7c16f74c00c3e241
|
@@ -62,7 +62,7 @@ Example:
|
|
62
62
|
<block type="math_number"></block>
|
63
63
|
<block type="ColorSelector"></block>
|
64
64
|
<block type="DireccionSelector"></block>
|
65
|
-
|
65
|
+
<block type="BoolSelector"></block>
|
66
66
|
</category>
|
67
67
|
<category name="Expresiones primitivas">
|
68
68
|
<block type="hayBolitas"></block>
|
@@ -78,9 +78,9 @@ Example:
|
|
78
78
|
<block type="OperadorDeComparacion"></block>
|
79
79
|
<block type="OperadorLogico"></block>
|
80
80
|
<block type="not"></block>
|
81
|
-
|
82
|
-
|
83
|
-
|
81
|
+
<block type="siguiente"></block>
|
82
|
+
<block type="previo"></block>
|
83
|
+
<block type="opuesto"></block>
|
84
84
|
</category>
|
85
85
|
</category>
|
86
86
|
<category name="Definiciones">
|
@@ -5072,15 +5072,18 @@ Blockly.GobstonesLanguage.addPragma = function(block, str){
|
|
5072
5072
|
Blockly.utils.genUid.soup_ = Blockly.utils.genUid.soup_.replace(/@/g,"a");
|
5073
5073
|
|
5074
5074
|
function getCustomTeacherDropdownValue(block) {
|
5075
|
+
// TODO: Hackeada de compromiso
|
5076
|
+
|
5075
5077
|
try {
|
5076
|
-
const
|
5077
|
-
|
5078
|
-
const
|
5079
|
-
|
5080
|
-
|
5081
|
-
|
5082
|
-
|
5083
|
-
|
5078
|
+
const getCustomTeacherDropdown = (field) => field.name === 'custom_teacher_dropdown';
|
5079
|
+
|
5080
|
+
const input = block.inputList.find((input) =>
|
5081
|
+
input.fieldRow.some(getCustomTeacherDropdown)
|
5082
|
+
);
|
5083
|
+
const field = input.fieldRow.find(getCustomTeacherDropdown);
|
5084
|
+
|
5085
|
+
return field.getValue();
|
5086
|
+
} catch(e) {
|
5084
5087
|
return null;
|
5085
5088
|
}
|
5086
5089
|
}
|
@@ -6141,9 +6144,9 @@ Blockly.ErrorInforming.CssContent = [
|
|
6141
6144
|
const attributes = definition.attributes;
|
6142
6145
|
|
6143
6146
|
const dropdown = definition.attributes && definition.attributes.block_dropdown;
|
6144
|
-
const dropdownOptions = dropdown && dropdown.match(/\("
|
6147
|
+
const dropdownOptions = dropdown && dropdown.match(/\("[^"]+" *, *'[^']*'\)/g);
|
6145
6148
|
return dropdownOptions && dropdownOptions.map((option) => {
|
6146
|
-
const parts = option.match(/^\("(
|
6149
|
+
const parts = option.match(/^\("([^"]+)" *, *'([^']*)'\)$/);
|
6147
6150
|
return [parts[1], parts[2]];
|
6148
6151
|
});
|
6149
6152
|
},
|
@@ -6161,11 +6164,12 @@ Blockly.ErrorInforming.CssContent = [
|
|
6161
6164
|
const parts = (customName ? this._getParts : this._getPartsByConvention.bind(this, true))
|
6162
6165
|
.bind(this)(finalName);
|
6163
6166
|
|
6167
|
+
const self = this;
|
6168
|
+
|
6164
6169
|
// Bloque
|
6165
6170
|
Blockly.Blocks[name] = {
|
6166
|
-
|
6167
|
-
|
6168
|
-
this.setColour(Blockly.CUSTOM_COLORS.primitiveProcedure);
|
6171
|
+
init: function () {
|
6172
|
+
this.setColour(Blockly.CUSTOM_COLORS.primitiveProcedure);
|
6169
6173
|
|
6170
6174
|
if (icon) {
|
6171
6175
|
this.appendDummyInput().appendField(new Blockly.FieldImage(
|
@@ -6176,37 +6180,19 @@ Blockly.ErrorInforming.CssContent = [
|
|
6176
6180
|
));
|
6177
6181
|
}
|
6178
6182
|
|
6179
|
-
|
6180
|
-
|
6181
|
-
|
6182
|
-
|
6183
|
-
|
6184
|
-
|
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 {
|
6197
|
-
this.appendValueInput('arg' + argsIndex).appendField(parts[i]);
|
6198
|
-
argsIndex++;
|
6199
|
-
}
|
6200
|
-
}
|
6201
|
-
this.setPreviousStatement(true);
|
6202
|
-
this.setNextStatement(true);
|
6203
|
-
this.setInputsInline(true);
|
6204
|
-
}
|
6183
|
+
self._definePrimitiveHolesOrDropdown(this, parts, dropdownOptions);
|
6184
|
+
|
6185
|
+
this.setPreviousStatement(true);
|
6186
|
+
this.setNextStatement(true);
|
6187
|
+
this.setInputsInline(true);
|
6188
|
+
}
|
6205
6189
|
};
|
6190
|
+
|
6206
6191
|
let argsList = [];
|
6207
6192
|
for(var i=1;i<parts.length;i++) {
|
6208
6193
|
argsList.push('arg' + i);
|
6209
6194
|
}
|
6195
|
+
|
6210
6196
|
// Generator
|
6211
6197
|
Blockly.GobstonesLanguage[name] = procBlockCodeGenerator(name, argsList);
|
6212
6198
|
},
|
@@ -6235,10 +6221,11 @@ Blockly.ErrorInforming.CssContent = [
|
|
6235
6221
|
const parts = (customName ? this._getParts : this._getPartsByConvention.bind(this, false))
|
6236
6222
|
.bind(this)(finalName);
|
6237
6223
|
|
6224
|
+
const self = this;
|
6225
|
+
|
6238
6226
|
// Bloque
|
6239
6227
|
Blockly.Blocks[name] = {
|
6240
6228
|
init: function () {
|
6241
|
-
let argsIndex = 1;
|
6242
6229
|
this.setColour(Blockly.CUSTOM_COLORS.primitiveFunction);
|
6243
6230
|
|
6244
6231
|
if (icon) {
|
@@ -6250,38 +6237,20 @@ Blockly.ErrorInforming.CssContent = [
|
|
6250
6237
|
));
|
6251
6238
|
}
|
6252
6239
|
|
6253
|
-
|
6254
|
-
|
6255
|
-
this.appendDummyInput().appendField(parts[i]);
|
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 {
|
6271
|
-
this.appendValueInput('arg' + argsIndex).appendField(parts[i]);
|
6272
|
-
argsIndex++;
|
6273
|
-
}
|
6274
|
-
}
|
6240
|
+
self._definePrimitiveHolesOrDropdown(this, parts, dropdownOptions);
|
6241
|
+
|
6275
6242
|
this.setPreviousStatement(false);
|
6276
6243
|
this.setNextStatement(false);
|
6277
6244
|
this.setInputsInline(true);
|
6278
6245
|
this.setOutput('var');
|
6279
6246
|
}
|
6280
6247
|
};
|
6248
|
+
|
6281
6249
|
let argsList = [];
|
6282
6250
|
for(var i=1;i<parts.length;i++) {
|
6283
6251
|
argsList.push('arg' + i);
|
6284
6252
|
}
|
6253
|
+
|
6285
6254
|
// Generator
|
6286
6255
|
Blockly.GobstonesLanguage[name] = functionBlockCodeGenerator(name, argsList);
|
6287
6256
|
},
|
@@ -6296,6 +6265,36 @@ Blockly.ErrorInforming.CssContent = [
|
|
6296
6265
|
}
|
6297
6266
|
},
|
6298
6267
|
|
6268
|
+
_definePrimitiveHolesOrDropdown: function (block, parts, dropdownOptions) {
|
6269
|
+
if (dropdownOptions) {
|
6270
|
+
if (parts.length !== 2) throw new Error("Only one parameter is supported when using block_dropdown");
|
6271
|
+
|
6272
|
+
// En Space (U+2002)
|
6273
|
+
dropdownOptions.forEach((opt) => opt[0] = opt[0].replace(/ /g, " "));
|
6274
|
+
|
6275
|
+
block.jsonInit({
|
6276
|
+
message0: parts.join('%1'),
|
6277
|
+
args0: [
|
6278
|
+
{
|
6279
|
+
type: 'field_dropdown',
|
6280
|
+
name: "custom_teacher_dropdown",
|
6281
|
+
options: dropdownOptions
|
6282
|
+
}
|
6283
|
+
]
|
6284
|
+
});
|
6285
|
+
} else {
|
6286
|
+
let argsIndex = 1;
|
6287
|
+
for (var i in parts) {
|
6288
|
+
if (i == parts.length - 1) {
|
6289
|
+
block.appendDummyInput().appendField(parts[i]);
|
6290
|
+
} else {
|
6291
|
+
block.appendValueInput('arg' + argsIndex).appendField(parts[i]);
|
6292
|
+
argsIndex++;
|
6293
|
+
}
|
6294
|
+
}
|
6295
|
+
}
|
6296
|
+
},
|
6297
|
+
|
6299
6298
|
_onBlocklyWorkspaceUpdate: function () {
|
6300
6299
|
let xml = Blockly.Xml.workspaceToDom(this.workspace);
|
6301
6300
|
this._blocklyWorkspaceXML = Blockly.Xml.domToText(xml);
|
@@ -6524,12 +6523,12 @@ Blockly.ErrorInforming.CssContent = [
|
|
6524
6523
|
attached: function() {
|
6525
6524
|
this._definePrimitiveProcedures();
|
6526
6525
|
this._definePrimitiveFunctions();
|
6527
|
-
|
6526
|
+
// create workspace
|
6528
6527
|
var blocklyDiv = this.$$('#blocklyDiv');
|
6529
6528
|
this.blocklyDiv = blocklyDiv;
|
6530
6529
|
this._fixSize();
|
6531
6530
|
this._fixScroll();
|
6532
|
-
|
6531
|
+
this.workspace = Blockly.inject(blocklyDiv, {
|
6533
6532
|
toolbox: this._createToolbox(),
|
6534
6533
|
media: this.get("media"),
|
6535
6534
|
toolboxPosition: "start",
|
@@ -6542,7 +6541,7 @@ Blockly.ErrorInforming.CssContent = [
|
|
6542
6541
|
controls: true,
|
6543
6542
|
wheel: true
|
6544
6543
|
}
|
6545
|
-
|
6544
|
+
});
|
6546
6545
|
var _this = this;
|
6547
6546
|
this.workspace.addChangeListener(function (a, b, c) {
|
6548
6547
|
Blockly.Events.disableOrphans(a, b, c);
|
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.18.
|
4
|
+
version: 0.18.1
|
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-
|
11
|
+
date: 2018-08-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|