kopia lustrzana https://github.com/backface/turtlestitch
				
				
				
			integrated multimap primitive
							rodzic
							
								
									3973983b13
								
							
						
					
					
						commit
						5aece84881
					
				| 
						 | 
				
			
			@ -7,6 +7,7 @@
 | 
			
		|||
    * hyperdyadic MIN and MAX primitives reachable via "relabel"
 | 
			
		||||
    * hyperdyadic less / great than or equals primitives reachable via "relabel"
 | 
			
		||||
    * new SIGN function in arithmetic dropdown
 | 
			
		||||
    * new experimental compiled Multimap, thanks, Brian
 | 
			
		||||
* **Notable Changes:**
 | 
			
		||||
    * searching for blocks and keyboard entry now includes the contents of dropdown menus
 | 
			
		||||
    * disabled dropping reporters into certain dropdowns (monadic functions, types, costume attributees, graphic effects, layers, audio attributes, pen attributes, dates, relation, keys, video attributes)
 | 
			
		||||
| 
						 | 
				
			
			@ -22,6 +23,7 @@
 | 
			
		|||
 | 
			
		||||
### 2020-12-07
 | 
			
		||||
* GUI: improved SVG loading, thanks, Joan!
 | 
			
		||||
* threads, objects, blocks: compiled multimap, thanks, Brian
 | 
			
		||||
 | 
			
		||||
### 2020-12-05
 | 
			
		||||
* objects: alternative collision detection method using the video-cache, commented out for reference.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8,9 +8,9 @@
 | 
			
		|||
        <script src="src/morphic.js?version=2020-12-02"></script>
 | 
			
		||||
        <script src="src/symbols.js?version=2020-10-07"></script>
 | 
			
		||||
        <script src="src/widgets.js?version=2020-10-06"></script>
 | 
			
		||||
        <script src="src/blocks.js?version=2020-12-04"></script>
 | 
			
		||||
        <script src="src/threads.js?version=2020-12-04"></script>
 | 
			
		||||
        <script src="src/objects.js?version=2020-12-05"></script>
 | 
			
		||||
        <script src="src/blocks.js?version=2020-12-07"></script>
 | 
			
		||||
        <script src="src/threads.js?version=2020-12-07"></script>
 | 
			
		||||
        <script src="src/objects.js?version=2020-12-07"></script>
 | 
			
		||||
        <script src="src/gui.js?version=2020-12-07"></script>
 | 
			
		||||
        <script src="src/paint.js?version=2020-05-17"></script>
 | 
			
		||||
        <script src="src/lists.js?version=2020-12-01"></script>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -158,7 +158,7 @@ CustomCommandBlockMorph, SymbolMorph, ToggleButtonMorph, DialMorph*/
 | 
			
		|||
 | 
			
		||||
// Global stuff ////////////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
modules.blocks = '2020-December-04';
 | 
			
		||||
modules.blocks = '2020-December-07';
 | 
			
		||||
 | 
			
		||||
var SyntaxElementMorph;
 | 
			
		||||
var BlockMorph;
 | 
			
		||||
| 
						 | 
				
			
			@ -2839,7 +2839,6 @@ BlockMorph.prototype.userMenu = function () {
 | 
			
		|||
    ) {
 | 
			
		||||
        alternatives = {
 | 
			
		||||
            reportMap : 'reportAtomicMap',
 | 
			
		||||
			reportMap : 'reportAtomicMultimap',
 | 
			
		||||
            reportKeep : 'reportAtomicKeep',
 | 
			
		||||
            reportFindFirst: 'reportAtomicFindFirst',
 | 
			
		||||
            reportCombine : 'reportAtomicCombine'
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -84,7 +84,7 @@ BlockEditorMorph, BlockDialogMorph, PrototypeHatBlockMorph,  BooleanSlotMorph,
 | 
			
		|||
localize, TableMorph, TableFrameMorph, normalizeCanvas, VectorPaintEditorMorph,
 | 
			
		||||
AlignmentMorph, Process, WorldMap, copyCanvas, useBlurredShadows*/
 | 
			
		||||
 | 
			
		||||
modules.objects = '2020-December-05';
 | 
			
		||||
modules.objects = '2020-December-07';
 | 
			
		||||
 | 
			
		||||
var SpriteMorph;
 | 
			
		||||
var StageMorph;
 | 
			
		||||
| 
						 | 
				
			
			@ -1385,7 +1385,7 @@ SpriteMorph.prototype.initBlocks = function () {
 | 
			
		|||
            dev: true, // not shown in palette, only accessible via relabelling
 | 
			
		||||
            type: 'reporter',
 | 
			
		||||
            category: 'lists',
 | 
			
		||||
            spec: '%blitz map %repRing over %lists'
 | 
			
		||||
            spec: '%blitz multimap %repRing over %lists'
 | 
			
		||||
        },
 | 
			
		||||
        reportKeep: {
 | 
			
		||||
            type: 'reporter',
 | 
			
		||||
| 
						 | 
				
			
			@ -1694,7 +1694,12 @@ SpriteMorph.prototype.blockAlternatives = {
 | 
			
		|||
    reportKeep: ['reportFindFirst', 'reportMap'],
 | 
			
		||||
    reportFindFirst: ['reportKeep', 'reportMap'],
 | 
			
		||||
    doForEach: [['doFor', 1], ['doForever', -2], ['doRepeat', -1],
 | 
			
		||||
        ['doUntil', -1]]
 | 
			
		||||
        ['doUntil', -1]],
 | 
			
		||||
 | 
			
		||||
    // lists - special hidden HOFs
 | 
			
		||||
    reportAtomicMap: ['reportAtomicMultimap'],
 | 
			
		||||
    reportAtomicMultimap: ['reportAtomicMap']
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// SpriteMorph instance creation
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -61,7 +61,7 @@ StageMorph, SpriteMorph, StagePrompterMorph, Note, modules, isString, copy, Map,
 | 
			
		|||
isNil, WatcherMorph, List, ListWatcherMorph, alert, console, TableMorph, BLACK,
 | 
			
		||||
TableFrameMorph, ColorSlotMorph, isSnapObject, newCanvas, Symbol, SVG_Costume*/
 | 
			
		||||
 | 
			
		||||
modules.threads = '2020-December-04';
 | 
			
		||||
modules.threads = '2020-December-07';
 | 
			
		||||
 | 
			
		||||
var ThreadManager;
 | 
			
		||||
var Process;
 | 
			
		||||
| 
						 | 
				
			
			@ -6113,11 +6113,15 @@ Process.prototype.reportAtomicMultimap = function (reporter, list) {
 | 
			
		|||
    // #3 - optional | source list
 | 
			
		||||
 | 
			
		||||
    this.assertType(list, 'list');
 | 
			
		||||
    if (list.itemsArray().length == 1) {
 | 
			
		||||
        return this.reportAtomicMap(reporter, list.at(1));
 | 
			
		||||
    }
 | 
			
		||||
	var result = [],
 | 
			
		||||
    	src = list.itemsArray().map(onelist => onelist.itemsArray()),
 | 
			
		||||
    	len = src[1].length,
 | 
			
		||||
    	width = src.length,
 | 
			
		||||
        formalParameterCount = reporter.inputs.length,
 | 
			
		||||
        column = (list, index) => list.map(row => row[index]),
 | 
			
		||||
        parms,
 | 
			
		||||
     	func,
 | 
			
		||||
    	i;
 | 
			
		||||
| 
						 | 
				
			
			@ -6140,9 +6144,9 @@ Process.prototype.reportAtomicMultimap = function (reporter, list) {
 | 
			
		|||
 | 
			
		||||
	for (i = 0; i < len; i += 1) {
 | 
			
		||||
        if (formalParameterCount > 0) {
 | 
			
		||||
	        parms = [new List(src.map(onearg => onearg[i]))];
 | 
			
		||||
	        parms = [new List(column(src, i))];
 | 
			
		||||
		} else {
 | 
			
		||||
			parms = src.map(onearg => onearg[i]);
 | 
			
		||||
			parms = column(src, i);
 | 
			
		||||
		}
 | 
			
		||||
        if (formalParameterCount > 1) {
 | 
			
		||||
            parms.push(i + 1);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Ładowanie…
	
		Reference in New Issue