kopia lustrzana https://github.com/backface/turtlestitch
block-assembly support refactorings, experimental
rodzic
608027c957
commit
4f91a38bdc
|
@ -68,6 +68,9 @@
|
|||
* Chinese, thanks, Simon!
|
||||
* Brazilian Portuguese, thank you, Cassiano D'Andrea!
|
||||
|
||||
### 2021-12-02
|
||||
* blocks, threads: block-assembly support refactorings, experimental
|
||||
|
||||
### 2021-12-01
|
||||
* blocks, threads: block-assembly support refactorings, experimental
|
||||
* blocks, threads: equality testing for scripts, experimental
|
||||
|
|
|
@ -16,8 +16,8 @@
|
|||
<script src="src/morphic.js?version=2021-07-09"></script>
|
||||
<script src="src/symbols.js?version=2021-03-03"></script>
|
||||
<script src="src/widgets.js?version=2021-17-09"></script>
|
||||
<script src="src/blocks.js?version=2021-12-01"></script>
|
||||
<script src="src/threads.js?version=2021-12-01"></script>
|
||||
<script src="src/blocks.js?version=2021-12-02"></script>
|
||||
<script src="src/threads.js?version=2021-12-02"></script>
|
||||
<script src="src/objects.js?version=2021-11-26"></script>
|
||||
<script src="src/scenes.js?version=2021-11-24"></script>
|
||||
<script src="src/gui.js?version=2021-11-30"></script>
|
||||
|
|
|
@ -160,7 +160,7 @@ CustomCommandBlockMorph, ToggleButtonMorph, DialMorph, SnapExtensions*/
|
|||
|
||||
// Global stuff ////////////////////////////////////////////////////////
|
||||
|
||||
modules.blocks = '2021-December-01';
|
||||
modules.blocks = '2021-December-02';
|
||||
|
||||
var SyntaxElementMorph;
|
||||
var BlockMorph;
|
||||
|
@ -5497,15 +5497,13 @@ CommandBlockMorph.prototype.components = function () {
|
|||
}
|
||||
expr.fixBlockColor(null, true);
|
||||
inputs = expr.inputs();
|
||||
if (!inputs.length ||
|
||||
inputs.every(slot => slot.isEmptySlot && slot.isEmptySlot())) {
|
||||
return expr.reify();
|
||||
}
|
||||
parts = new List([expr.reify()]);
|
||||
inputs.forEach(inp => {
|
||||
var val;
|
||||
if (inp instanceof BlockMorph) {
|
||||
parts.add(inp.components());
|
||||
} else if (inp.isEmptySlot()) {
|
||||
parts.add(); // empty
|
||||
} else {
|
||||
val = inp.evaluate();
|
||||
parts.add(val instanceof BlockMorph ? val.components() : val);
|
||||
|
@ -6297,15 +6295,13 @@ ReporterBlockMorph.prototype.components = function () {
|
|||
inputs = expr.inputs(),
|
||||
parts;
|
||||
expr.fixBlockColor(null, true);
|
||||
if (!inputs.length ||
|
||||
inputs.every(slot => slot.isEmptySlot && slot.isEmptySlot())) {
|
||||
return expr.reify();
|
||||
}
|
||||
parts = new List([expr.reify()]);
|
||||
inputs.forEach(inp => {
|
||||
var val;
|
||||
if (inp instanceof BlockMorph) {
|
||||
parts.add(inp.components());
|
||||
} else if (inp.isEmptySlot()) {
|
||||
parts.add(); // empty
|
||||
} else {
|
||||
val = inp.evaluate();
|
||||
parts.add(val instanceof BlockMorph ? val.components() : val);
|
||||
|
|
|
@ -62,9 +62,9 @@ isNil, WatcherMorph, List, ListWatcherMorph, alert, console, TableMorph, BLACK,
|
|||
TableFrameMorph, ColorSlotMorph, isSnapObject, newCanvas, Symbol, SVG_Costume,
|
||||
SnapExtensions, AlignmentMorph, TextMorph, Cloud, HatBlockMorph*/
|
||||
|
||||
/*jshint esversion: 6*/
|
||||
/*jshint esversion: 11*/
|
||||
|
||||
modules.threads = '2021-December-01';
|
||||
modules.threads = '2021-December-02';
|
||||
|
||||
var ThreadManager;
|
||||
var Process;
|
||||
|
@ -88,7 +88,7 @@ const NONNUMBERS = [true, false, ''];
|
|||
|
||||
function snapEquals(a, b) {
|
||||
// lists, functions and blocks
|
||||
if (a.equalTo || b.equalTo) {
|
||||
if (a?.equalTo || b?.equalTo) {
|
||||
if (a.constructor.name === b.constructor.name) {
|
||||
return a.equalTo(b);
|
||||
}
|
||||
|
@ -7017,7 +7017,7 @@ Context.prototype.components = function () {
|
|||
this.expression.components() : new Context(),
|
||||
parts;
|
||||
if (!this.inputs.length) {
|
||||
return expr;
|
||||
return expr instanceof Context ? new List([expr]) : expr;
|
||||
}
|
||||
parts = new List();
|
||||
parts.add(expr); // blocks / other
|
||||
|
@ -7028,8 +7028,8 @@ Context.prototype.components = function () {
|
|||
Context.prototype.equalTo = function (other) {
|
||||
var c1 = this.components(),
|
||||
c2 = other.components();
|
||||
if (c1 instanceof Context && (c2 instanceof Context)) {
|
||||
return snapEquals(c1.expression, c2.expression);
|
||||
if (snapEquals(c1.cdr(), c2.cdr())) {
|
||||
return snapEquals(this.expression, other.expression);
|
||||
}
|
||||
return snapEquals(c1, c2);
|
||||
};
|
||||
|
|
Ładowanie…
Reference in New Issue