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).
20 lines
606 B
Swift
20 lines
606 B
Swift
public extension PureYAML.Stream {
|
|
/// Validation issue with the document index preserved.
|
|
struct Issue: Swift.Error, Equatable, Sendable, CustomStringConvertible {
|
|
public var documentIndex: Int
|
|
public var issue: PureYAML.Validation.ValidationError
|
|
|
|
public init(
|
|
documentIndex: Int,
|
|
issue: PureYAML.Validation.ValidationError,
|
|
) {
|
|
self.documentIndex = documentIndex
|
|
self.issue = issue
|
|
}
|
|
|
|
public var description: String {
|
|
"document[\(documentIndex)]: \(issue.description)"
|
|
}
|
|
}
|
|
}
|