kopia lustrzana https://github.com/backface/turtlestitch
refactored scanning for message senders
rodzic
8baaece26d
commit
2bcc3d7264
|
@ -11,6 +11,9 @@
|
||||||
* Norwegian, thanks, Olav!
|
* Norwegian, thanks, Olav!
|
||||||
* German
|
* German
|
||||||
|
|
||||||
|
### 2020-09-04
|
||||||
|
* byob, blocks, objects: refactored scanning for message senders
|
||||||
|
|
||||||
### 2020-09-03
|
### 2020-09-03
|
||||||
* byob: experimental: Inspect & export dependencies for global custom blocks (shift-right-click for context menu)
|
* byob: experimental: Inspect & export dependencies for global custom blocks (shift-right-click for context menu)
|
||||||
* byob: new feature: "export block definition" including dependencies
|
* byob: new feature: "export block definition" including dependencies
|
||||||
|
|
|
@ -8,13 +8,13 @@
|
||||||
<script src="src/morphic.js?version=2020-07-23"></script>
|
<script src="src/morphic.js?version=2020-07-23"></script>
|
||||||
<script src="src/symbols.js?version=2020-07-21"></script>
|
<script src="src/symbols.js?version=2020-07-21"></script>
|
||||||
<script src="src/widgets.js?version=2020-07-27"></script>
|
<script src="src/widgets.js?version=2020-07-27"></script>
|
||||||
<script src="src/blocks.js?version=2020-09-03"></script>
|
<script src="src/blocks.js?version=2020-09-04"></script>
|
||||||
<script src="src/threads.js?version=2020-09-02"></script>
|
<script src="src/threads.js?version=2020-09-02"></script>
|
||||||
<script src="src/objects.js?version=2020-09-03"></script>
|
<script src="src/objects.js?version=2020-09-04"></script>
|
||||||
<script src="src/gui.js?version=2020-09-01"></script>
|
<script src="src/gui.js?version=2020-09-01"></script>
|
||||||
<script src="src/paint.js?version=2020-05-17"></script>
|
<script src="src/paint.js?version=2020-05-17"></script>
|
||||||
<script src="src/lists.js?version=2020-07-01"></script>
|
<script src="src/lists.js?version=2020-07-01"></script>
|
||||||
<script src="src/byob.js?version=2020-09-03"></script>
|
<script src="src/byob.js?version=2020-09-04"></script>
|
||||||
<script src="src/tables.js?version=2020-05-18"></script>
|
<script src="src/tables.js?version=2020-05-18"></script>
|
||||||
<script src="src/sketch.js?version=2020-07-13"></script>
|
<script src="src/sketch.js?version=2020-07-13"></script>
|
||||||
<script src="src/video.js?version=2019-06-27"></script>
|
<script src="src/video.js?version=2019-06-27"></script>
|
||||||
|
|
|
@ -158,7 +158,7 @@ CustomCommandBlockMorph, SymbolMorph, ToggleButtonMorph, DialMorph*/
|
||||||
|
|
||||||
// Global stuff ////////////////////////////////////////////////////////
|
// Global stuff ////////////////////////////////////////////////////////
|
||||||
|
|
||||||
modules.blocks = '2020-September-03';
|
modules.blocks = '2020-September-04';
|
||||||
|
|
||||||
var SyntaxElementMorph;
|
var SyntaxElementMorph;
|
||||||
var BlockMorph;
|
var BlockMorph;
|
||||||
|
@ -3173,6 +3173,37 @@ BlockMorph.prototype.showMessageUsers = function () {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
BlockMorph.prototype.isSending = function (message, receiverName, known = []) {
|
||||||
|
if (typeof message === 'number') {
|
||||||
|
message = message.toString();
|
||||||
|
}
|
||||||
|
return this.allChildren().some(morph => {
|
||||||
|
var event, eventReceiver;
|
||||||
|
if (morph.isCustomBlock &&
|
||||||
|
morph.isGlobal &&
|
||||||
|
contains(known, morph.definition)
|
||||||
|
) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if ((morph.selector) &&
|
||||||
|
contains(
|
||||||
|
['doBroadcast', 'doBroadcastAndWait', 'doSend'],
|
||||||
|
morph.selector)
|
||||||
|
) {
|
||||||
|
event = morph.inputs()[0].evaluate();
|
||||||
|
if (morph.selector === 'doSend') {
|
||||||
|
eventReceiver = morph.inputs()[1].evaluate();
|
||||||
|
}
|
||||||
|
return ((morph.selector !== 'doSend') ||
|
||||||
|
(receiverName === eventReceiver)) &&
|
||||||
|
((event === message) ||
|
||||||
|
(message instanceof Array &&
|
||||||
|
message[0] === 'any message'));
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
BlockMorph.prototype.developersMenu = function () {
|
BlockMorph.prototype.developersMenu = function () {
|
||||||
var menu = BlockMorph.uber.developersMenu.call(this);
|
var menu = BlockMorph.uber.developersMenu.call(this);
|
||||||
menu.addLine();
|
menu.addLine();
|
||||||
|
|
27
src/byob.js
27
src/byob.js
|
@ -107,7 +107,7 @@ WatcherMorph, Variable, BooleanSlotMorph, XML_Serializer, SnapTranslator*/
|
||||||
|
|
||||||
// Global stuff ////////////////////////////////////////////////////////
|
// Global stuff ////////////////////////////////////////////////////////
|
||||||
|
|
||||||
modules.byob = '2020-September-03';
|
modules.byob = '2020-September-04';
|
||||||
|
|
||||||
// Declarations
|
// Declarations
|
||||||
|
|
||||||
|
@ -589,32 +589,9 @@ CustomBlockDefinition.prototype.collectDependencies = function (
|
||||||
};
|
};
|
||||||
|
|
||||||
CustomBlockDefinition.prototype.isSending = function (message, receiverName) {
|
CustomBlockDefinition.prototype.isSending = function (message, receiverName) {
|
||||||
if (typeof message === 'number') {
|
|
||||||
message = message.toString();
|
|
||||||
}
|
|
||||||
return this.scripts.concat(
|
return this.scripts.concat(
|
||||||
this.body ? [this.body.expression] : []
|
this.body ? [this.body.expression] : []
|
||||||
).some(script =>
|
).some(script => script.isSending(message, receiverName));
|
||||||
script.allChildren().some(morph => {
|
|
||||||
var event, eventReceiver;
|
|
||||||
if ((morph.selector) &&
|
|
||||||
contains(
|
|
||||||
['doBroadcast', 'doBroadcastAndWait', 'doSend'],
|
|
||||||
morph.selector)
|
|
||||||
) {
|
|
||||||
event = morph.inputs()[0].evaluate();
|
|
||||||
if (morph.selector === 'doSend') {
|
|
||||||
eventReceiver = morph.inputs()[1].evaluate();
|
|
||||||
}
|
|
||||||
return ((morph.selector !== 'doSend') ||
|
|
||||||
(receiverName === eventReceiver)) &&
|
|
||||||
((event === message) ||
|
|
||||||
(message instanceof Array &&
|
|
||||||
message[0] === 'any message'));
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
})
|
|
||||||
);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// CustomCommandBlockMorph /////////////////////////////////////////////
|
// CustomCommandBlockMorph /////////////////////////////////////////////
|
||||||
|
|
|
@ -84,7 +84,7 @@ BlockEditorMorph, BlockDialogMorph, PrototypeHatBlockMorph, BooleanSlotMorph,
|
||||||
localize, TableMorph, TableFrameMorph, normalizeCanvas, VectorPaintEditorMorph,
|
localize, TableMorph, TableFrameMorph, normalizeCanvas, VectorPaintEditorMorph,
|
||||||
HandleMorph, AlignmentMorph, Process, XML_Element, WorldMap, copyCanvas*/
|
HandleMorph, AlignmentMorph, Process, XML_Element, WorldMap, copyCanvas*/
|
||||||
|
|
||||||
modules.objects = '2020-September-03';
|
modules.objects = '2020-September-04';
|
||||||
|
|
||||||
var SpriteMorph;
|
var SpriteMorph;
|
||||||
var StageMorph;
|
var StageMorph;
|
||||||
|
@ -5774,35 +5774,8 @@ SpriteMorph.prototype.allMessageNames = function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
SpriteMorph.prototype.allSendersOf = function (message, receiverName, known) {
|
SpriteMorph.prototype.allSendersOf = function (message, receiverName, known) {
|
||||||
if (typeof message === 'number') {
|
|
||||||
message = message.toString();
|
|
||||||
}
|
|
||||||
return this.allScripts().filter(script =>
|
return this.allScripts().filter(script =>
|
||||||
script.allChildren().some(morph => {
|
script.isSending(message, receiverName, known)
|
||||||
var event, eventReceiver;
|
|
||||||
if (morph.isCustomBlock &&
|
|
||||||
morph.isGlobal &&
|
|
||||||
contains(known, morph.definition)
|
|
||||||
) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if ((morph.selector) &&
|
|
||||||
contains(
|
|
||||||
['doBroadcast', 'doBroadcastAndWait', 'doSend'],
|
|
||||||
morph.selector)
|
|
||||||
) {
|
|
||||||
event = morph.inputs()[0].evaluate();
|
|
||||||
if (morph.selector === 'doSend') {
|
|
||||||
eventReceiver = morph.inputs()[1].evaluate();
|
|
||||||
}
|
|
||||||
return ((morph.selector !== 'doSend') ||
|
|
||||||
(receiverName === eventReceiver)) &&
|
|
||||||
((event === message) ||
|
|
||||||
(message instanceof Array &&
|
|
||||||
message[0] === 'any message'));
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
})
|
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue