Skip to main content

sim_lib_view_doc/
cookbook.rs

1//! Deterministic cookbook builders for document view recipes.
2
3use sim_kernel::Expr;
4use sim_lib_scene::stack;
5
6use crate::{article, article_formatted, article_source, equation, prose, section};
7
8/// Build the formatted article Scene used by the cookbook recipe.
9pub fn article_demo() -> Expr {
10    let scene = article_formatted(&sample_article());
11    debug_assert!(sim_lib_scene::validate_scene(&scene).is_ok());
12    scene
13}
14
15/// Build paired formatted/source Scenes for the LaTeX lens cookbook recipe.
16pub fn latex_lens_demo() -> Expr {
17    let doc = sample_article();
18    let scene = stack("row", vec![article_formatted(&doc), article_source(&doc)]);
19    debug_assert!(sim_lib_scene::validate_scene(&scene).is_ok());
20    scene
21}
22
23fn sample_article() -> Expr {
24    article(
25        "Cookbook Article",
26        vec![
27            section("Surface"),
28            prose("The same document opens through formatted and source lenses."),
29            equation("\\int_0^1 x^2 dx = 1/3"),
30        ],
31    )
32}
33
34#[cfg(test)]
35mod tests {
36    use super::*;
37
38    #[test]
39    fn cookbook_doc_demos_are_valid_scenes() {
40        sim_lib_scene::validate_scene(&article_demo()).expect("article scene validates");
41        sim_lib_scene::validate_scene(&latex_lens_demo()).expect("latex scene validates");
42    }
43}