Sources/Confidence/PayloadMerger.swift (19 lines of code) (raw):
import Foundation
internal protocol PayloadMerger {
func merge(context: ConfidenceStruct, data: ConfidenceStruct) throws -> ConfidenceStruct
}
internal struct PayloadMergerImpl: PayloadMerger {
func merge(context: ConfidenceStruct, data: ConfidenceStruct) throws -> ConfidenceStruct {
guard data["context"] == nil else {
throw ConfidenceError.invalidContextInMessage
}
var map: ConfidenceStruct = data
map["context"] = ConfidenceValue.init(structure: context)
return map
}
}
extension Dictionary {
static func += (lhs: inout Self, rhs: Self) {
lhs.merge(rhs) { _, new in new }
}
}