mirror of https://github.com/oxen-io/session-ios
				
				
				
			
			You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			59 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Swift
		
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Swift
		
	
| // Copyright © 2022 Rangeproof Pty Ltd. All rights reserved.
 | |
| 
 | |
| import Foundation
 | |
| 
 | |
| public extension Dictionary {
 | |
|     
 | |
|     var prettifiedDescription: String {
 | |
|         return "[ " + map { key, value in
 | |
|             let keyDescription = String(describing: key)
 | |
|             let valueDescription = String(describing: value)
 | |
|             let maxLength = 20
 | |
|             let truncatedValueDescription = valueDescription.count > maxLength ? valueDescription.prefix(maxLength) + "..." : valueDescription
 | |
|             return keyDescription + " : " + truncatedValueDescription
 | |
|         }.joined(separator: ", ") + " ]"
 | |
|     }
 | |
|     
 | |
|     func asArray() -> [(key: Key, value: Value)] {
 | |
|         return Array(self)
 | |
|     }
 | |
| }
 | |
| 
 | |
| public extension Dictionary.Values {
 | |
|     func asArray() -> [Value] {
 | |
|         return Array(self)
 | |
|     }
 | |
| }
 | |
| 
 | |
| // MARK: - Functional Convenience
 | |
| 
 | |
| public extension Dictionary {
 | |
|     func setting(_ key: Key?, _ value: Value?) -> [Key: Value] {
 | |
|         guard let key: Key = key else { return self }
 | |
|         
 | |
|         var updatedDictionary: [Key: Value] = self
 | |
|         updatedDictionary[key] = value
 | |
| 
 | |
|         return updatedDictionary
 | |
|     }
 | |
|     
 | |
|     func updated(with other: [Key: Value]) -> [Key: Value] {
 | |
|         var updatedDictionary: [Key: Value] = self
 | |
|         
 | |
|         other.forEach { key, value in
 | |
|             updatedDictionary[key] = value
 | |
|         }
 | |
| 
 | |
|         return updatedDictionary
 | |
|     }
 | |
|     
 | |
|     func removingValue(forKey key: Key?) -> [Key: Value] {
 | |
|         guard let key: Key = key else { return self }
 | |
|         
 | |
|         var updatedDictionary: [Key: Value] = self
 | |
|         updatedDictionary.removeValue(forKey: key)
 | |
| 
 | |
|         return updatedDictionary
 | |
|     }
 | |
| }
 |