use crate::{Diagnostic, Document, DocumentIndex, EntryRelationIssue};
#[derive(Debug)]
pub struct DocumentValidation<'a> {
document: &'a Document,
index: DocumentIndex,
relations: Vec<EntryRelationIssue>,
diagnostics: Vec<Diagnostic>,
}
impl<'a> DocumentValidation<'a> {
#[must_use]
pub fn new(document: &'a Document) -> Self {
let index = DocumentIndex::build(document);
let relations = crate::entry::relation_issues(document, &index);
let diagnostics = super::document::validate_with_index(document, &index, &relations);
Self {
document,
index,
relations,
diagnostics,
}
}
#[must_use]
pub fn document(&self) -> &'a Document {
self.document
}
#[must_use]
pub fn index(&self) -> &DocumentIndex {
&self.index
}
#[must_use]
pub fn relation_issues(&self) -> &[EntryRelationIssue] {
&self.relations
}
#[must_use]
pub fn diagnostics(&self) -> &[Diagnostic] {
&self.diagnostics
}
#[must_use]
pub fn into_diagnostics(self) -> Vec<Diagnostic> {
self.diagnostics
}
}