kopia lustrzana https://github.com/backface/turtlestitch
new "this script" primitive in sensing, experimental
rodzic
6afe1f3908
commit
6732ce5331
|
|
@ -19,6 +19,7 @@
|
|||
* new "label", "type", "scope" and "slots" choices in the OF BLOCK block-attribute reporter's dropdown
|
||||
* new "set attribute of block" primitive, experimental
|
||||
* new "define block" primitive, experimental
|
||||
* new "this script" primitive, experimental
|
||||
* new localization extension primitives in the "ide" category, hyperized
|
||||
* new extension primitive for importing a costume from a url
|
||||
* new support for setting the translation via the API
|
||||
|
|
@ -51,6 +52,9 @@
|
|||
* **Translation Updates:**
|
||||
* German
|
||||
|
||||
### 2022-06-22
|
||||
* objects, blocks, threads: new "this script" primitive in sensing, experimental
|
||||
|
||||
### 2022-06-21
|
||||
* threads: fixed #3061
|
||||
|
||||
|
|
|
|||
|
|
@ -16,9 +16,9 @@
|
|||
<script src="src/morphic.js?version=2022-04-26"></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=2022-05-29"></script>
|
||||
<script src="src/threads.js?version=2022-06-21"></script>
|
||||
<script src="src/objects.js?version=2022-05-20"></script>
|
||||
<script src="src/blocks.js?version=2022-06-22"></script>
|
||||
<script src="src/threads.js?version=2022-06-22"></script>
|
||||
<script src="src/objects.js?version=2022-06-22"></script>
|
||||
<script src="src/scenes.js?version=2022-03-03"></script>
|
||||
<script src="src/gui.js?version=2022-05-19"></script>
|
||||
<script src="src/paint.js?version=2021-07-05"></script>
|
||||
|
|
|
|||
|
|
@ -161,7 +161,7 @@ CostumeIconMorph, SoundIconMorph, SVG_Costume, embedMetadataPNG*/
|
|||
|
||||
// Global stuff ////////////////////////////////////////////////////////
|
||||
|
||||
modules.blocks = '2022-May-29';
|
||||
modules.blocks = '2022-June-22';
|
||||
|
||||
var SyntaxElementMorph;
|
||||
var BlockMorph;
|
||||
|
|
@ -7474,6 +7474,7 @@ RingMorph.prototype.vanishForSimilar = function () {
|
|||
block.selector === 'reportJSFunction' ||
|
||||
block.selector === 'reportAttributeOf' ||
|
||||
block.selector === 'reportCompiled' ||
|
||||
block.selector === 'reportThisContext' ||
|
||||
(block instanceof RingMorph)
|
||||
) {
|
||||
this.parent.replaceInput(this, block);
|
||||
|
|
|
|||
|
|
@ -94,7 +94,7 @@ embedMetadataPNG*/
|
|||
|
||||
/*jshint esversion: 6*/
|
||||
|
||||
modules.objects = '2022-May-20';
|
||||
modules.objects = '2022-June-22';
|
||||
|
||||
var SpriteMorph;
|
||||
var StageMorph;
|
||||
|
|
@ -1110,6 +1110,11 @@ SpriteMorph.prototype.initBlocks = function () {
|
|||
category: 'sensing',
|
||||
spec: 'define block %s %repRing'
|
||||
},
|
||||
reportThisContext: {
|
||||
type: 'reporter',
|
||||
category: 'sensing',
|
||||
spec: 'this script'
|
||||
},
|
||||
|
||||
// Operators
|
||||
reifyScript: {
|
||||
|
|
@ -2704,6 +2709,7 @@ SpriteMorph.prototype.blockTemplates = function (
|
|||
blocks.push(block('reportBlockAttribute'));
|
||||
blocks.push(block('doSetBlockAttribute'));
|
||||
blocks.push(block('reportDefineBlock'));
|
||||
blocks.push(block('reportThisContext'));
|
||||
|
||||
// for debugging: ///////////////
|
||||
if (devMode) {
|
||||
|
|
@ -9178,6 +9184,7 @@ StageMorph.prototype.blockTemplates = function (
|
|||
blocks.push(block('reportBlockAttribute'));
|
||||
blocks.push(block('doSetBlockAttribute'));
|
||||
blocks.push(block('reportDefineBlock'));
|
||||
blocks.push(block('reportThisContext'));
|
||||
|
||||
// for debugging: ///////////////
|
||||
if (this.world().isDevMode) {
|
||||
|
|
|
|||
|
|
@ -65,7 +65,7 @@ StagePickerMorph, CustomBlockDefinition*/
|
|||
|
||||
/*jshint esversion: 11, bitwise: false, evil: true*/
|
||||
|
||||
modules.threads = '2022-June-21';
|
||||
modules.threads = '2022-June-22';
|
||||
|
||||
var ThreadManager;
|
||||
var Process;
|
||||
|
|
@ -1379,6 +1379,9 @@ Process.prototype.evaluate = function (
|
|||
// parameter ID Symbol.for('arguments'), to be used for variadic inputs
|
||||
outer.variables.addVar(Symbol.for('arguments'), args);
|
||||
|
||||
// assign a self-reference for introspection and recursion
|
||||
outer.variables.addVar(Symbol.for('self'), context);
|
||||
|
||||
// assign arguments that are actually passed
|
||||
if (parms.length > 0) {
|
||||
|
||||
|
|
@ -1546,6 +1549,17 @@ Process.prototype.initializeFor = function (context, args) {
|
|||
this.context = runnable;
|
||||
};
|
||||
|
||||
// Process introspection
|
||||
|
||||
Process.prototype.reportThisContext = function () {
|
||||
var sym = Symbol.for('self'),
|
||||
frame = this.context.variables.silentFind(sym);
|
||||
if (frame) {
|
||||
return frame.vars[sym].value;
|
||||
}
|
||||
return this.topBlock.reify();
|
||||
};
|
||||
|
||||
// Process stopping blocks primitives
|
||||
|
||||
Process.prototype.doStopBlock = function () {
|
||||
|
|
@ -1713,6 +1727,7 @@ Process.prototype.evaluateCustomBlock = function () {
|
|||
this.readyToYield = true;
|
||||
}
|
||||
}
|
||||
outer.variables.addVar(Symbol.for('self'), method.body || new Context());
|
||||
runnable.expression = runnable.expression.blockSequence();
|
||||
};
|
||||
|
||||
|
|
@ -5619,7 +5634,6 @@ Process.prototype.reportBasicBlockAttribute = function (attribute, block) {
|
|||
return body.expression.inputs()[0].reify(body.inputs);
|
||||
}
|
||||
return body;
|
||||
|
||||
case 'category':
|
||||
return expr ?
|
||||
SpriteMorph.prototype.allCategories().indexOf(expr.category) + 1
|
||||
|
|
|
|||
Ładowanie…
Reference in New Issue