34 lines
1.0 KiB
Swift
34 lines
1.0 KiB
Swift
//
|
|
// Swiftfin is subject to the terms of the Mozilla Public
|
|
// License, v2.0. If a copy of the MPL was not distributed with this
|
|
// file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
|
//
|
|
// Copyright (c) 2025 Jellyfin & Jellyfin Contributors
|
|
//
|
|
|
|
import OrderedCollections
|
|
|
|
extension OrderedDictionary {
|
|
|
|
var isNotEmpty: Bool {
|
|
!isEmpty
|
|
}
|
|
|
|
func compactKeys<WrappedKey: Hashable>() -> OrderedDictionary<WrappedKey, Value> where Key == WrappedKey? {
|
|
reduce(into: OrderedDictionary<WrappedKey, Value>()) { result, pair in
|
|
if let unwrappedKey = pair.key {
|
|
result[unwrappedKey] = pair.value
|
|
}
|
|
}
|
|
}
|
|
|
|
func sortedKeys(by areInIncreasingOrder: (Key, Key) -> Bool) -> OrderedDictionary<Key, Value> {
|
|
let sortedKeys = keys.sorted(by: areInIncreasingOrder)
|
|
|
|
return OrderedDictionary(uniqueKeysWithValues: sortedKeys.compactMap { key in
|
|
guard let value = self[key] else { return nil }
|
|
return (key, value)
|
|
})
|
|
}
|
|
}
|