pub struct LowerResult {
pub document: Document,
pub diagnostics: Vec<Diagnostic>,
pub metadata: DocumentMetadata,
pub external_dependencies: Vec<ExternalDependency>,
pub bibliography: Bibliography,
pub bibliography_complete: bool,
pub citation_spans: Vec<Range<usize>>,
}Expand description
Result of lowering a [SyntaxTree] into a [Document].
§Examples
use std::path::Path;
use mos_core::CollectingSink;
use mos_eval::{Evaluator, LowerResult};
let mut sink = CollectingSink::new();
let parse_result = mos_parse::parse("= Hello\n", Path::new("main.mos"), &mut sink);
assert!(
parse_result.is_ok(),
"parse structurally aborted: {parse_result:?}"
);
if let Ok(tree) = parse_result {
let result: LowerResult = Evaluator::evaluate(&tree);
assert!(!result.has_errors());
}Fields§
§document: DocumentAuthored nodes carry [mos_core::Node::content_hash] snapshots taken
before resolution. Generated bibliography entries keep the default hash.
diagnostics: Vec<Diagnostic>§metadata: DocumentMetadata§external_dependencies: Vec<ExternalDependency>Every external file this lowering read (#image / #figure rasters,
#bibliography sources), with the fingerprint each had at the time,
sorted by path. Such a lowering is not a pure function of the source
text: a caller that caches it across time must check
ExternalDependency::is_current on each entry before reuse. The set
is complete after lower / lower_tree; a bare
Evaluator::evaluate has not yet opened bibliography sources.
bibliography: BibliographyEvery BibTeX record loaded from the declared #bibliography sources,
merged across sources and keyed by citation key. Empty after a bare
Evaluator::evaluate, which has not yet opened bibliography sources.
bibliography_complete: boolWhether every declared bibliography source was successfully read and parsed. False before source loading; records may be partial when false.
citation_spans: Vec<Range<usize>>Parser-recognized citation ranges, including unfinished citations.
See [SyntaxTree::citation_spans].
Implementations§
Source§impl LowerResult
impl LowerResult
Sourcepub fn reads_external_resources(&self) -> bool
pub fn reads_external_resources(&self) -> bool
Whether lowering read any external file; see
external_dependencies.
§Examples
use std::path::Path;
assert!(!mos_eval::lower("= Hello\n", Path::new("main.mos")).reads_external_resources());
assert!(mos_eval::lower("#image(\"x.png\")\n", Path::new("main.mos")).reads_external_resources());Sourcepub fn has_errors(&self) -> bool
pub fn has_errors(&self) -> bool
Return whether any lowering diagnostic is an error.
§Examples
use std::path::Path;
let result = mos_eval::lower("= Hello\n", Path::new("main.mos"));
assert!(!result.has_errors());