refactored block assembly, experimental

snap7
jmoenig 2021-12-06 09:29:57 +01:00
rodzic a5b8d10bfe
commit cb1246a4c4
6 zmienionych plików z 20 dodań i 18 usunięć

Wyświetl plik

@ -68,6 +68,9 @@
* Chinese, thanks, Simon! * Chinese, thanks, Simon!
* Brazilian Portuguese, thank you, Cassiano D'Andrea! * Brazilian Portuguese, thank you, Cassiano D'Andrea!
### 2021-12-06
* blocks, threads: refactored block assembly, experimental
### 2021-12-05 ### 2021-12-05
* blocks, threads, objects: introspection & syntax analysis, experimental * blocks, threads, objects: introspection & syntax analysis, experimental

Wyświetl plik

@ -16,11 +16,11 @@
<script src="src/morphic.js?version=2021-07-09"></script> <script src="src/morphic.js?version=2021-07-09"></script>
<script src="src/symbols.js?version=2021-03-03"></script> <script src="src/symbols.js?version=2021-03-03"></script>
<script src="src/widgets.js?version=2021-17-09"></script> <script src="src/widgets.js?version=2021-17-09"></script>
<script src="src/blocks.js?version=2021-12-05"></script> <script src="src/blocks.js?version=2021-12-06"></script>
<script src="src/threads.js?version=2021-12-05"></script> <script src="src/threads.js?version=2021-12-06"></script>
<script src="src/objects.js?version=2021-12-05"></script> <script src="src/objects.js?version=2021-12-05"></script>
<script src="src/scenes.js?version=2021-11-24"></script> <script src="src/scenes.js?version=2021-11-24"></script>
<script src="src/gui.js?version=2021-12-05"></script> <script src="src/gui.js?version=2021-12-06"></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=2021-07-19"></script> <script src="src/lists.js?version=2021-07-19"></script>
<script src="src/byob.js?version=2021-11-23"></script> <script src="src/byob.js?version=2021-11-23"></script>

Wyświetl plik

@ -160,7 +160,7 @@ CustomCommandBlockMorph, ToggleButtonMorph, DialMorph, SnapExtensions*/
// Global stuff //////////////////////////////////////////////////////// // Global stuff ////////////////////////////////////////////////////////
modules.blocks = '2021-December-05'; modules.blocks = '2021-December-06';
var SyntaxElementMorph; var SyntaxElementMorph;
var BlockMorph; var BlockMorph;
@ -3732,7 +3732,7 @@ BlockMorph.prototype.equalTo = function (other) {
this.blockSpec === other.blockSpec; this.blockSpec === other.blockSpec;
}; };
BlockMorph.prototype.copyWithInputs = function (inputs, parameterNames) { BlockMorph.prototype.copyWithInputs = function (inputs) {
// private - only to be called from a Context // private - only to be called from a Context
var cpy = this.fullCopy(), var cpy = this.fullCopy(),
slots = cpy.inputs(), slots = cpy.inputs(),
@ -3812,7 +3812,7 @@ BlockMorph.prototype.copyWithInputs = function (inputs, parameterNames) {
}); });
// create a function to return // create a function to return
return cpy.reify(parameterNames); return cpy.reify(dta.slice(count));
}; };
BlockMorph.prototype.reify = function (inputNames) { BlockMorph.prototype.reify = function (inputNames) {
@ -5560,7 +5560,7 @@ CommandBlockMorph.prototype.extract = function () {
// CommandBlockMorph components - EXPERIMENTAL // CommandBlockMorph components - EXPERIMENTAL
CommandBlockMorph.prototype.components = function (parameterNames) { CommandBlockMorph.prototype.components = function (parameterNames = []) {
var seq = new List(this.blockSequence()).map(block => { var seq = new List(this.blockSequence()).map(block => {
var expr = block.fullCopy(), var expr = block.fullCopy(),
nb = expr.nextBlock(), nb = expr.nextBlock(),
@ -5570,7 +5570,7 @@ CommandBlockMorph.prototype.components = function (parameterNames) {
} }
expr.fixBlockColor(null, true); expr.fixBlockColor(null, true);
inputs = expr.inputs(); inputs = expr.inputs();
parts = new List([expr.reify(parameterNames)]); parts = new List([expr.reify()]);
inputs.forEach(inp => { inputs.forEach(inp => {
var val; var val;
if (inp instanceof BlockMorph) { if (inp instanceof BlockMorph) {
@ -5615,6 +5615,7 @@ CommandBlockMorph.prototype.components = function (parameterNames) {
} }
}); });
parts.at(1).updateEmptySlots(); parts.at(1).updateEmptySlots();
parameterNames.forEach(name => parts.add(name));
return parts; return parts;
}); });
return seq.length() === 1 ? seq.at(1) : seq; return seq.length() === 1 ? seq.at(1) : seq;
@ -6407,12 +6408,12 @@ ReporterBlockMorph.prototype.userDestroy = function () {
// ReporterBlockMorph components - EXPERIMENTAL // ReporterBlockMorph components - EXPERIMENTAL
ReporterBlockMorph.prototype.components = function (parameterNames) { ReporterBlockMorph.prototype.components = function (parameterNames = []) {
var expr = this.fullCopy(), var expr = this.fullCopy(),
inputs = expr.inputs(), inputs = expr.inputs(),
parts; parts;
expr.fixBlockColor(null, true); expr.fixBlockColor(null, true);
parts = new List([expr.reify(parameterNames)]); parts = new List([expr.reify()]);
inputs.forEach(inp => { inputs.forEach(inp => {
var val; var val;
if (inp instanceof BlockMorph) { if (inp instanceof BlockMorph) {
@ -6456,6 +6457,7 @@ ReporterBlockMorph.prototype.components = function (parameterNames) {
expr.revertToDefaultInput(inp, true); expr.revertToDefaultInput(inp, true);
} }
}); });
parameterNames.forEach(name => parts.add(name));
parts.at(1).updateEmptySlots(); parts.at(1).updateEmptySlots();
return parts; return parts;
}; };

Wyświetl plik

@ -86,7 +86,7 @@ BlockVisibilityDialogMorph, ThreadManager*/
// Global stuff //////////////////////////////////////////////////////// // Global stuff ////////////////////////////////////////////////////////
modules.gui = '2021-December-05'; modules.gui = '2021-December-06';
// Declarations // Declarations
@ -4770,7 +4770,7 @@ IDE_Morph.prototype.aboutSnap = function () {
module, btn1, btn2, btn3, btn4, licenseBtn, translatorsBtn, module, btn1, btn2, btn3, btn4, licenseBtn, translatorsBtn,
world = this.world(); world = this.world();
aboutTxt = 'Snap! 7 - dev211205 -\nBuild Your Own Blocks\n\n' aboutTxt = 'Snap! 7 - dev211206 -\nBuild Your Own Blocks\n\n'
+ 'Copyright \u24B8 2008-2021 Jens M\u00F6nig and ' + 'Copyright \u24B8 2008-2021 Jens M\u00F6nig and '
+ 'Brian Harvey\n' + 'Brian Harvey\n'
+ 'jens@moenig.org, bh@cs.berkeley.edu\n\n' + 'jens@moenig.org, bh@cs.berkeley.edu\n\n'

Wyświetl plik

@ -64,7 +64,7 @@ SnapExtensions, AlignmentMorph, TextMorph, Cloud, HatBlockMorph*/
/*jshint esversion: 6*/ /*jshint esversion: 6*/
modules.threads = '2021-December-05'; modules.threads = '2021-December-06';
var ThreadManager; var ThreadManager;
var Process; var Process;
@ -7136,13 +7136,10 @@ Context.prototype.components = function () {
Context.prototype.equalTo = function (other) { Context.prototype.equalTo = function (other) {
var c1 = this.components(), var c1 = this.components(),
c2 = other.components(); c2 = other.components();
if (!(new List(this.inputs).equalTo(new List(other.inputs)))) {
return false;
}
if (snapEquals(c1.cdr(), c2.cdr())) { if (snapEquals(c1.cdr(), c2.cdr())) {
return snapEquals(this.expression, other.expression); return snapEquals(this.expression, other.expression);
} }
return snapEquals(c1, c2); return false;
}; };
Context.prototype.copyWithInputs = function (inputs) { Context.prototype.copyWithInputs = function (inputs) {

2
sw.js
Wyświetl plik

@ -1,4 +1,4 @@
var snapVersion = '7-dev211205' var snapVersion = '7-dev211206'
var cacheName = 'snap-pwa', var cacheName = 'snap-pwa',
filesToCache = [ filesToCache = [