diff options
Diffstat (limited to 'src/model')
| -rw-r--r-- | src/model/mod.rs | 2 | ||||
| -rw-r--r-- | src/model/typeset.rs | 17 |
2 files changed, 19 insertions, 0 deletions
diff --git a/src/model/mod.rs b/src/model/mod.rs index 93e33d5c..f5c1e6dd 100644 --- a/src/model/mod.rs +++ b/src/model/mod.rs @@ -21,6 +21,7 @@ mod func; mod methods; mod ops; mod scope; +mod typeset; mod vm; #[doc(hidden)] @@ -38,5 +39,6 @@ pub use self::library::*; pub use self::scope::*; pub use self::str::*; pub use self::styles::*; +pub use self::typeset::*; pub use self::value::*; pub use self::vm::*; diff --git a/src/model/typeset.rs b/src/model/typeset.rs new file mode 100644 index 00000000..2026bf99 --- /dev/null +++ b/src/model/typeset.rs @@ -0,0 +1,17 @@ +use comemo::Tracked; + +use super::{Content, StyleChain}; +use crate::diag::SourceResult; +use crate::frame::Frame; +use crate::World; + +/// Typeset content into a collection of layouted frames. +/// +/// Returns either a vector of frames representing individual pages or +/// diagnostics in the form of a vector of error message with file and span +/// information. +pub fn typeset(world: Tracked<dyn World>, content: &Content) -> SourceResult<Vec<Frame>> { + let library = world.library(); + let styles = StyleChain::with_root(&library.styles); + (library.items.layout)(content, world, styles) +} |
