kopia lustrzana https://github.com/backface/turtlestitch
programmatically reduce the number of inputs in a custom block
rodzic
644c8fedcf
commit
105acbd7cd
|
@ -45,6 +45,9 @@
|
||||||
* **Translation Updates:**
|
* **Translation Updates:**
|
||||||
* German
|
* German
|
||||||
|
|
||||||
|
### 2022-05-01
|
||||||
|
* byob: programmatically reduce the number of inputs in a custom block
|
||||||
|
|
||||||
### 2022-04-28
|
### 2022-04-28
|
||||||
* threads, byob: programmatically re-define custom blocks, experimental, under construction
|
* threads, byob: programmatically re-define custom blocks, experimental, under construction
|
||||||
* threads: programmatically re-categorize custom blocks
|
* threads: programmatically re-categorize custom blocks
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
<script src="src/gui.js?version=2022-04-26"></script>
|
<script src="src/gui.js?version=2022-04-26"></script>
|
||||||
<script src="src/paint.js?version=2021-07-05"></script>
|
<script src="src/paint.js?version=2021-07-05"></script>
|
||||||
<script src="src/lists.js?version=2022-02-07"></script>
|
<script src="src/lists.js?version=2022-02-07"></script>
|
||||||
<script src="src/byob.js?version=2022-04-28"></script>
|
<script src="src/byob.js?version=2022-05-01"></script>
|
||||||
<script src="src/tables.js?version=2022-01-28"></script>
|
<script src="src/tables.js?version=2022-01-28"></script>
|
||||||
<script src="src/sketch.js?version=2021-11-03"></script>
|
<script src="src/sketch.js?version=2021-11-03"></script>
|
||||||
<script src="src/video.js?version=2019-06-27"></script>
|
<script src="src/video.js?version=2019-06-27"></script>
|
||||||
|
|
32
src/byob.js
32
src/byob.js
|
@ -111,7 +111,7 @@ ArgLabelMorph*/
|
||||||
|
|
||||||
// Global stuff ////////////////////////////////////////////////////////
|
// Global stuff ////////////////////////////////////////////////////////
|
||||||
|
|
||||||
modules.byob = '2022-April-28';
|
modules.byob = '2022-May-01';
|
||||||
|
|
||||||
// Declarations
|
// Declarations
|
||||||
|
|
||||||
|
@ -569,7 +569,10 @@ CustomBlockDefinition.prototype.setBlockDefinition = function (aContext) {
|
||||||
declarations = this.declarations,
|
declarations = this.declarations,
|
||||||
parts = [];
|
parts = [];
|
||||||
|
|
||||||
if (oldInputs.length !== newInputs.length) {
|
if (oldInputs.length > newInputs.length) {
|
||||||
|
this.removeInputs(oldInputs.length - newInputs.length);
|
||||||
|
spec = this.abstractBlockSpec();
|
||||||
|
} else if (oldInputs.length !== newInputs.length) {
|
||||||
throw new Error('expecting the number of inputs to match');
|
throw new Error('expecting the number of inputs to match');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -601,6 +604,31 @@ CustomBlockDefinition.prototype.setBlockDefinition = function (aContext) {
|
||||||
this.body = aContext;
|
this.body = aContext;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
CustomBlockDefinition.prototype.removeInputs = function (count) {
|
||||||
|
// private - only to be called from a Process that also does housekeeping
|
||||||
|
var surplus = this.inputNames().slice(-count);
|
||||||
|
|
||||||
|
// remove the surplus input names from the spec
|
||||||
|
this.spec = this.parseSpec(this.spec).filter(str =>
|
||||||
|
!(str.length > 1 && (str[0]) === '%' && surplus.includes(str.slice(1)))
|
||||||
|
).join(' ').trim();
|
||||||
|
|
||||||
|
// remove the surplus input names from the slot declarations
|
||||||
|
surplus.forEach(name => this.declarations.delete(name));
|
||||||
|
};
|
||||||
|
|
||||||
|
CustomBlockDefinition.prototype.addInputs = function (count) {
|
||||||
|
// private
|
||||||
|
};
|
||||||
|
|
||||||
|
CustomBlockDefinition.prototype.gensym = function (existing) {
|
||||||
|
var count = 1;
|
||||||
|
while (contains(existing, '#' + count)) {
|
||||||
|
count += 1;
|
||||||
|
}
|
||||||
|
return '#' + count;
|
||||||
|
};
|
||||||
|
|
||||||
// CustomBlockDefinition picturing
|
// CustomBlockDefinition picturing
|
||||||
|
|
||||||
CustomBlockDefinition.prototype.scriptsPicture = function () {
|
CustomBlockDefinition.prototype.scriptsPicture = function () {
|
||||||
|
|
Ładowanie…
Reference in New Issue