kopia lustrzana https://github.com/backface/turtlestitch
new "is empty" predicate primitive in List category
rodzic
76921d0aa8
commit
b570f95a3e
|
@ -25,7 +25,7 @@
|
||||||
* new "get graphic effect" reporter
|
* new "get graphic effect" reporter
|
||||||
* new "get pen attribute" reporter
|
* new "get pen attribute" reporter
|
||||||
* new "write" command in pen category (used to be "label" in tools)
|
* new "write" command in pen category (used to be "label" in tools)
|
||||||
* new "map","keep", "combine" and "for each" primitives in list category
|
* new "is empty", "map","keep", "combine" and "for each" primitives in list category
|
||||||
* new "for" loop and "if then else" reporter primitives in the Control category
|
* new "for" loop and "if then else" reporter primitives in the Control category
|
||||||
* added "neg", "lg" (log2) and "2^" selectors to monadic function reporter in Operators
|
* added "neg", "lg" (log2) and "2^" selectors to monadic function reporter in Operators
|
||||||
* added "^" reporter (power of) in the Operators category
|
* added "^" reporter (power of) in the Operators category
|
||||||
|
@ -71,6 +71,9 @@
|
||||||
* German
|
* German
|
||||||
* French
|
* French
|
||||||
|
|
||||||
|
### 2019-04-26
|
||||||
|
* Lists, Threads, Objects: new "is empty" predicate primitive in List category
|
||||||
|
|
||||||
### 2019-04-26
|
### 2019-04-26
|
||||||
* updated Catalan translation (for new HOF prims)
|
* updated Catalan translation (for new HOF prims)
|
||||||
* updated Spanish translation (for new HOF prims)
|
* updated Spanish translation (for new HOF prims)
|
||||||
|
|
|
@ -7,11 +7,11 @@
|
||||||
<script type="text/javascript" src="src/morphic.js?version=2019-02-07"></script>
|
<script type="text/javascript" src="src/morphic.js?version=2019-02-07"></script>
|
||||||
<script type="text/javascript" src="src/widgets.js?version=2019-04-05"></script>
|
<script type="text/javascript" src="src/widgets.js?version=2019-04-05"></script>
|
||||||
<script type="text/javascript" src="src/blocks.js?version=2019-04-11"></script>
|
<script type="text/javascript" src="src/blocks.js?version=2019-04-11"></script>
|
||||||
<script type="text/javascript" src="src/threads.js?version=2019-04-26"></script>
|
<script type="text/javascript" src="src/threads.js?version=2019-04-27"></script>
|
||||||
<script type="text/javascript" src="src/objects.js?version=2019-04-26"></script>
|
<script type="text/javascript" src="src/objects.js?version=2019-04-27"></script>
|
||||||
<script type="text/javascript" src="src/gui.js?version=2019-04-10"></script>
|
<script type="text/javascript" src="src/gui.js?version=2019-04-10"></script>
|
||||||
<script type="text/javascript" src="src/paint.js?version=2019-02-22"></script>
|
<script type="text/javascript" src="src/paint.js?version=2019-02-22"></script>
|
||||||
<script type="text/javascript" src="src/lists.js?version=2019-02-07"></script>
|
<script type="text/javascript" src="src/lists.js?version=2019-04-27"></script>
|
||||||
<script type="text/javascript" src="src/byob.js?version=2019-02-15"></script>
|
<script type="text/javascript" src="src/byob.js?version=2019-02-15"></script>
|
||||||
<script type="text/javascript" src="src/tables.js?version=2019-02-07"></script>
|
<script type="text/javascript" src="src/tables.js?version=2019-02-07"></script>
|
||||||
<script type="text/javascript" src="src/symbols.js?version=2019-03-07"></script>
|
<script type="text/javascript" src="src/symbols.js?version=2019-03-07"></script>
|
||||||
|
|
10
src/lists.js
10
src/lists.js
|
@ -62,7 +62,7 @@ CellMorph, ArrowMorph, MenuMorph, snapEquals, Morph, isNil, localize, isString,
|
||||||
MorphicPreferences, TableDialogMorph, SpriteBubbleMorph, SpeechBubbleMorph,
|
MorphicPreferences, TableDialogMorph, SpriteBubbleMorph, SpeechBubbleMorph,
|
||||||
TableFrameMorph, TableMorph, Variable, isSnapObject*/
|
TableFrameMorph, TableMorph, Variable, isSnapObject*/
|
||||||
|
|
||||||
modules.lists = '2019-February-07';
|
modules.lists = '2019-April-27';
|
||||||
|
|
||||||
var List;
|
var List;
|
||||||
var ListWatcherMorph;
|
var ListWatcherMorph;
|
||||||
|
@ -95,6 +95,7 @@ var ListWatcherMorph;
|
||||||
length() - number of slots
|
length() - number of slots
|
||||||
at(index) - element present in specified slot
|
at(index) - element present in specified slot
|
||||||
contains(element) - <bool>
|
contains(element) - <bool>
|
||||||
|
isEmpty(element) - <bool>
|
||||||
|
|
||||||
conversion:
|
conversion:
|
||||||
-----------
|
-----------
|
||||||
|
@ -245,6 +246,13 @@ List.prototype.contains = function (element) {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
List.prototype.isEmpty = function () {
|
||||||
|
if (this.isLinked) {
|
||||||
|
return isNil(this.first);
|
||||||
|
}
|
||||||
|
return !this.contents.length;
|
||||||
|
};
|
||||||
|
|
||||||
// List table (2D) accessing (for table morph widget):
|
// List table (2D) accessing (for table morph widget):
|
||||||
|
|
||||||
List.prototype.isTable = function () {
|
List.prototype.isTable = function () {
|
||||||
|
|
|
@ -84,7 +84,7 @@ BlockEditorMorph, BlockDialogMorph, PrototypeHatBlockMorph, localize,
|
||||||
TableMorph, TableFrameMorph, normalizeCanvas, BooleanSlotMorph, HandleMorph,
|
TableMorph, TableFrameMorph, normalizeCanvas, BooleanSlotMorph, HandleMorph,
|
||||||
AlignmentMorph, Process, XML_Element, VectorPaintEditorMorph*/
|
AlignmentMorph, Process, XML_Element, VectorPaintEditorMorph*/
|
||||||
|
|
||||||
modules.objects = '2019-April-26';
|
modules.objects = '2019-April-27';
|
||||||
|
|
||||||
var SpriteMorph;
|
var SpriteMorph;
|
||||||
var StageMorph;
|
var StageMorph;
|
||||||
|
@ -1250,6 +1250,11 @@ SpriteMorph.prototype.initBlocks = function () {
|
||||||
spec: '%l contains %s',
|
spec: '%l contains %s',
|
||||||
defaults: [null, localize('thing')]
|
defaults: [null, localize('thing')]
|
||||||
},
|
},
|
||||||
|
reportListIsEmpty: {
|
||||||
|
type: 'predicate',
|
||||||
|
category: 'lists',
|
||||||
|
spec: 'is %l empty?'
|
||||||
|
},
|
||||||
doAddToList: {
|
doAddToList: {
|
||||||
type: 'command',
|
type: 'command',
|
||||||
category: 'lists',
|
category: 'lists',
|
||||||
|
@ -2431,6 +2436,7 @@ SpriteMorph.prototype.blockTemplates = function (category) {
|
||||||
blocks.push('-');
|
blocks.push('-');
|
||||||
blocks.push(block('reportListLength'));
|
blocks.push(block('reportListLength'));
|
||||||
blocks.push(block('reportListContainsItem'));
|
blocks.push(block('reportListContainsItem'));
|
||||||
|
blocks.push(block('reportListIsEmpty'));
|
||||||
blocks.push('-');
|
blocks.push('-');
|
||||||
blocks.push(block('reportMap'));
|
blocks.push(block('reportMap'));
|
||||||
blocks.push(block('reportKeep'));
|
blocks.push(block('reportKeep'));
|
||||||
|
@ -2616,6 +2622,7 @@ SpriteMorph.prototype.freshPalette = function (category) {
|
||||||
'reportCDR',
|
'reportCDR',
|
||||||
'reportListLength',
|
'reportListLength',
|
||||||
'reportListContainsItem',
|
'reportListContainsItem',
|
||||||
|
'reportListIsEmpty',
|
||||||
'doForEach',
|
'doForEach',
|
||||||
'reportMap',
|
'reportMap',
|
||||||
'reportKeep',
|
'reportKeep',
|
||||||
|
@ -7985,6 +7992,7 @@ StageMorph.prototype.blockTemplates = function (category) {
|
||||||
blocks.push('-');
|
blocks.push('-');
|
||||||
blocks.push(block('reportListLength'));
|
blocks.push(block('reportListLength'));
|
||||||
blocks.push(block('reportListContainsItem'));
|
blocks.push(block('reportListContainsItem'));
|
||||||
|
blocks.push(block('reportListIsEmpty'));
|
||||||
blocks.push('-');
|
blocks.push('-');
|
||||||
blocks.push(block('reportMap'));
|
blocks.push(block('reportMap'));
|
||||||
blocks.push(block('reportKeep'));
|
blocks.push(block('reportKeep'));
|
||||||
|
|
|
@ -62,7 +62,7 @@ StageMorph, SpriteMorph, StagePrompterMorph, Note, modules, isString, copy,
|
||||||
isNil, WatcherMorph, List, ListWatcherMorph, alert, console, TableMorph, Color,
|
isNil, WatcherMorph, List, ListWatcherMorph, alert, console, TableMorph, Color,
|
||||||
TableFrameMorph, ColorSlotMorph, isSnapObject, Map, newCanvas, Symbol*/
|
TableFrameMorph, ColorSlotMorph, isSnapObject, Map, newCanvas, Symbol*/
|
||||||
|
|
||||||
modules.threads = '2019-April-26';
|
modules.threads = '2019-April-27';
|
||||||
|
|
||||||
var ThreadManager;
|
var ThreadManager;
|
||||||
var Process;
|
var Process;
|
||||||
|
@ -1791,6 +1791,11 @@ Process.prototype.reportListContainsItem = function (list, element) {
|
||||||
return list.contains(element);
|
return list.contains(element);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Process.prototype.reportListIsEmpty = function (list) {
|
||||||
|
this.assertType(list, 'list');
|
||||||
|
return list.isEmpty();
|
||||||
|
};
|
||||||
|
|
||||||
Process.prototype.doShowTable = function (list) {
|
Process.prototype.doShowTable = function (list) {
|
||||||
// experimental
|
// experimental
|
||||||
this.assertType(list, 'list');
|
this.assertType(list, 'list');
|
||||||
|
|
Ładowanie…
Reference in New Issue