kopia lustrzana https://github.com/backface/turtlestitch
refactored scanning for message senders
rodzic
8baaece26d
commit
2bcc3d7264
|
@ -11,6 +11,9 @@
|
|||
* Norwegian, thanks, Olav!
|
||||
* German
|
||||
|
||||
### 2020-09-04
|
||||
* byob, blocks, objects: refactored scanning for message senders
|
||||
|
||||
### 2020-09-03
|
||||
* byob: experimental: Inspect & export dependencies for global custom blocks (shift-right-click for context menu)
|
||||
* 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/symbols.js?version=2020-07-21"></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/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/paint.js?version=2020-05-17"></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/sketch.js?version=2020-07-13"></script>
|
||||
<script src="src/video.js?version=2019-06-27"></script>
|
||||
|
|
|
@ -158,7 +158,7 @@ CustomCommandBlockMorph, SymbolMorph, ToggleButtonMorph, DialMorph*/
|
|||
|
||||
// Global stuff ////////////////////////////////////////////////////////
|
||||
|
||||
modules.blocks = '2020-September-03';
|
||||
modules.blocks = '2020-September-04';
|
||||
|
||||
var SyntaxElementMorph;
|
||||
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 () {
|
||||
var menu = BlockMorph.uber.developersMenu.call(this);
|
||||
menu.addLine();
|
||||
|
|
27
src/byob.js
27
src/byob.js
|
@ -107,7 +107,7 @@ WatcherMorph, Variable, BooleanSlotMorph, XML_Serializer, SnapTranslator*/
|
|||
|
||||
// Global stuff ////////////////////////////////////////////////////////
|
||||
|
||||
modules.byob = '2020-September-03';
|
||||
modules.byob = '2020-September-04';
|
||||
|
||||
// Declarations
|
||||
|
||||
|
@ -589,32 +589,9 @@ CustomBlockDefinition.prototype.collectDependencies = function (
|
|||
};
|
||||
|
||||
CustomBlockDefinition.prototype.isSending = function (message, receiverName) {
|
||||
if (typeof message === 'number') {
|
||||
message = message.toString();
|
||||
}
|
||||
return this.scripts.concat(
|
||||
this.body ? [this.body.expression] : []
|
||||
).some(script =>
|
||||
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;
|
||||
})
|
||||
);
|
||||
).some(script => script.isSending(message, receiverName));
|
||||
};
|
||||
|
||||
// CustomCommandBlockMorph /////////////////////////////////////////////
|
||||
|
|
|
@ -84,7 +84,7 @@ BlockEditorMorph, BlockDialogMorph, PrototypeHatBlockMorph, BooleanSlotMorph,
|
|||
localize, TableMorph, TableFrameMorph, normalizeCanvas, VectorPaintEditorMorph,
|
||||
HandleMorph, AlignmentMorph, Process, XML_Element, WorldMap, copyCanvas*/
|
||||
|
||||
modules.objects = '2020-September-03';
|
||||
modules.objects = '2020-September-04';
|
||||
|
||||
var SpriteMorph;
|
||||
var StageMorph;
|
||||
|
@ -5774,35 +5774,8 @@ SpriteMorph.prototype.allMessageNames = function () {
|
|||
};
|
||||
|
||||
SpriteMorph.prototype.allSendersOf = function (message, receiverName, known) {
|
||||
if (typeof message === 'number') {
|
||||
message = message.toString();
|
||||
}
|
||||
return this.allScripts().filter(script =>
|
||||
script.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;
|
||||
})
|
||||
script.isSending(message, receiverName, known)
|
||||
);
|
||||
};
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue