The validation module already implemented the composable-rule idiom under its own names (Check/Issue/SubjectContext) and a value-type Validator with duplicated traversal machinery per layer. Renamed the core types to the canonical names (Validation/ValidationError/ValidationErrorCollection/ ValidationContext/BuiltinValidation/AnyValidation), converted Validator to a reference-type class with the two-tier default-rule split, and genericized it over both Subject and Document via a new Traversable protocol so the model and tagged layers share one walk engine instead of two copies. Wired the JSON-representability rule set into the same shape and closed the two missing pieces (unwrap combinator, JSON coverage/config-pin tests).
15 lines
460 B
Swift
15 lines
460 B
Swift
public extension PureYAML.Validation {
|
|
/// Error thrown when validation reports failing errors.
|
|
struct ValidationErrorCollection: Swift.Error, Equatable, Sendable, CustomStringConvertible {
|
|
public var values: [ValidationError]
|
|
|
|
public init(_ values: [ValidationError]) {
|
|
self.values = values
|
|
}
|
|
|
|
public var description: String {
|
|
values.map(\.description).joined(separator: "\n")
|
|
}
|
|
}
|
|
}
|