diff --git a/Sources/KiteCore/Errors.swift b/Sources/KiteCore/Errors.swift new file mode 100644 index 0000000..1e173d0 --- /dev/null +++ b/Sources/KiteCore/Errors.swift @@ -0,0 +1,19 @@ +public struct SchemeError: Error, CustomStringConvertible { + public let message: String + public let irritants: [Value] + + public init(_ message: String, irritants: [Value] = []) { + self.message = message + self.irritants = irritants + } + + public var description: String { + if irritants.isEmpty { return message } + let parts = irritants.map { writeString($0) }.joined(separator: " ") + return "\(message) \(parts)" + } +} + +func schemeError(_ message: String, _ irritants: [Value] = []) -> SchemeError { + SchemeError(message, irritants: irritants) +}