helper for always present

This commit is contained in:
Pfeil, Scott Robert 2021-04-08 11:13:50 -04:00
parent 9fa06ed560
commit 95e36ffc2d

View File

@ -21,6 +21,8 @@ public extension MoleculeModelProtocol {
static var categoryCodingKey: String { "moleculeName" } static var categoryCodingKey: String { "moleculeName" }
} }
// Helpers made due to swift not able to reconcile which category.
extension KeyedDecodingContainer where Key: CodingKey { extension KeyedDecodingContainer where Key: CodingKey {
/// Decodes to a registered molecule based on the identifier /// Decodes to a registered molecule based on the identifier
public func decodeMoleculeIfPresent<T>(codingKey: KeyedDecodingContainer<K>.Key) throws -> T? { public func decodeMoleculeIfPresent<T>(codingKey: KeyedDecodingContainer<K>.Key) throws -> T? {
@ -33,6 +35,15 @@ extension KeyedDecodingContainer where Key: CodingKey {
} }
return modelT return modelT
} }
/// Decodes to a registered molecule based on the identifier.
public func decodeMolecule<T>(codingKey: KeyedDecodingContainer<K>.Key) throws -> T {
guard let model: T = try decodeMoleculeIfPresent(codingKey: codingKey) else {
MVMCoreLoggingHandler.logDebugMessage(withDelegate: "ModelRegistry Error decoderErrorObjectNotPresent: \(codingKey.stringValue)")
throw ModelRegistry.Error.decoderErrorObjectNotPresent(codingKey: codingKey, codingPath: codingPath)
}
return model
}
} }
public extension MoleculeModelProtocol { public extension MoleculeModelProtocol {