You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					67 lines
				
				2.3 KiB
			
		
		
			
		
	
	
					67 lines
				
				2.3 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								# OrderedMap
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Persistent data structure representing an ordered mapping from strings
							 | 
						||
| 
								 | 
							
								to values, with some convenient update methods.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								This is not an efficient data structure for large maps, just a minimal
							 | 
						||
| 
								 | 
							
								helper for cleanly creating and managing small maps in a way that
							 | 
						||
| 
								 | 
							
								makes their key order explicit and easy to think about.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								License: MIT
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Reference
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								The exported value from this module is the class `OrderedMap`,
							 | 
						||
| 
								 | 
							
								instances of which represent a mapping from strings to arbitrary
							 | 
						||
| 
								 | 
							
								values.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								**`OrderedMap.from`**`(value: ?Object | OrderedMap) → OrderedMap`  
							 | 
						||
| 
								 | 
							
								Return a map with the given content. If null, create an empty map. If
							 | 
						||
| 
								 | 
							
								given an ordered map, return that map itself. If given an object,
							 | 
						||
| 
								 | 
							
								create a map from the object's properties.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### Methods
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Instances of `OrderedMap` have the following methods and properties:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								**`get`**`(key: string) → ?any`  
							 | 
						||
| 
								 | 
							
								Retrieve the value stored under `key`, or return undefined when
							 | 
						||
| 
								 | 
							
								no such key exists.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								**`update`**`(key: string, value: any, newKey: ?string) → OrderedMap`  
							 | 
						||
| 
								 | 
							
								Create a new map by replacing the value of `key` with a new
							 | 
						||
| 
								 | 
							
								value, or adding a binding to the end of the map. If `newKey` is
							 | 
						||
| 
								 | 
							
								given, the key of the binding will be replaced with that key.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								**`remove`**`(key: string) → OrderedMap`  
							 | 
						||
| 
								 | 
							
								Return a map with the given key removed, if it existed.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								**`addToStart`**`(key: string, value: any) → OrderedMap`  
							 | 
						||
| 
								 | 
							
								Add a new key to the start of the map.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								**`addToEnd`**`(key: string, value: any) → OrderedMap`  
							 | 
						||
| 
								 | 
							
								Add a new key to the end of the map.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								**`addBefore`**`(place: string, key: value: string, value: any) → OrderedMap`  
							 | 
						||
| 
								 | 
							
								Add a key after the given key. If `place` is not found, the new
							 | 
						||
| 
								 | 
							
								key is added to the end.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								**`forEach`**`(f: (key: string, value: any))`  
							 | 
						||
| 
								 | 
							
								Call the given function for each key/value pair in the map, in
							 | 
						||
| 
								 | 
							
								order.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								**`prepend`**`(map: Object | OrderedMap) → OrderedMap`  
							 | 
						||
| 
								 | 
							
								Create a new map by prepending the keys in this map that don't
							 | 
						||
| 
								 | 
							
								appear in `map` before the keys in `map`.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								**`append`**`(map: Object | OrderedMap) → OrderedMap`  
							 | 
						||
| 
								 | 
							
								Create a new map by appending the keys in this map that don't
							 | 
						||
| 
								 | 
							
								appear in `map` after the keys in `map`.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								**`subtract`**`(map: Object | OrderedMap) → OrderedMap`  
							 | 
						||
| 
								 | 
							
								Create a map containing all the keys in this map that don't
							 | 
						||
| 
								 | 
							
								appear in `map`.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								**`size`**`: number`  
							 | 
						||
| 
								 | 
							
								The amount of keys in this map.
							 |