The two monolithic XSD content/identity rules only satisfied the OpenAPIKit validation idiom at the wrong granularity: no per-constraint removability, no isolable failing/near-miss tests. Split them into 32 named rules, each finding tagged at its origin and cached per XSDContext so the walk still runs once per document (the #101 decision against duplicating XSD's recursive type resolution still holds). Wired the streaming path's ID/IDREF and identity checks through the same framework instead of calling the validators imperatively, and added the unwrapAndLookup combinator the rule already named as required. Also includes the mandated repo-wide swiftformat/swiftlint pass.
16 lines
412 B
Swift
16 lines
412 B
Swift
/// A validation finding tagged with the decomposed rule it belongs to.
|
|
struct XSDFinding {
|
|
let rule: XSDRuleToken
|
|
let error: XSDFailure
|
|
|
|
init(_ rule: XSDRuleToken, reason: String, at path: XSDPath) {
|
|
self.rule = rule
|
|
error = XSDFailure(reason: reason, at: path)
|
|
}
|
|
|
|
init(_ rule: XSDRuleToken, _ error: XSDFailure) {
|
|
self.rule = rule
|
|
self.error = error
|
|
}
|
|
}
|