Files
Leeksov 4647310322 GLEGram 12.5 — Initial public release
Based on Swiftgram 12.5 (Telegram iOS 12.5).
All GLEGram features ported and organized in GLEGram/ folder.

Features: Ghost Mode, Saved Deleted Messages, Content Protection Bypass,
Font Replacement, Fake Profile, Chat Export, Plugin System, and more.

See CHANGELOG_12.5.md for full details.
2026-04-06 09:48:12 +03:00

68 lines
1.2 KiB
Swift

//
// DictionaryInitializable.swift
// Lottie
//
// Created by Marcelo Fabri on 5/5/22.
//
import Foundation
// MARK: - InitializableError
enum InitializableError: Error {
case invalidInput
}
// MARK: - DictionaryInitializable
protocol DictionaryInitializable {
init(dictionary: [String: Any]) throws
}
// MARK: - AnyInitializable
protocol AnyInitializable {
init(value: Any) throws
}
extension Dictionary {
@_disfavoredOverload
func value<T, KeyType: RawRepresentable>(for key: KeyType) throws -> T where KeyType.RawValue == Key {
guard let value = self[key.rawValue] as? T else {
throw InitializableError.invalidInput
}
return value
}
func value<T: AnyInitializable, KeyType: RawRepresentable>(for key: KeyType) throws -> T where KeyType.RawValue == Key {
if let value = self[key.rawValue] as? T {
return value
}
if let value = self[key.rawValue] {
return try T(value: value)
}
throw InitializableError.invalidInput
}
}
// MARK: - Array + AnyInitializable
extension Array: AnyInitializable where Element == Double {
init(value: Any) throws {
guard let array = value as? [Double] else {
throw InitializableError.invalidInput
}
self = array
}
}