merman 0.6.0

Rust, headless Mermaid implementation (1:1 parity; pinned to mermaid@11.12.3).
Documentation
#[cfg(feature = "render")]
#[test]
fn c4_render_svg_sync_uses_typed_render_path() {
    let engine = merman_core::Engine::new();
    let parse_options = merman_core::ParseOptions::strict();
    let layout = merman::render::LayoutOptions {
        viewport_width: 800.0,
        viewport_height: 600.0,
        text_measurer: std::sync::Arc::new(
            merman::render::VendoredFontMetricsTextMeasurer::default(),
        ),
        math_renderer: None,
        use_manatee_layout: true,
    };
    let svg_opts = merman::render::SvgRenderOptions {
        diagram_id: Some("typed_c4".to_string()),
        ..Default::default()
    };
    let input = r#"
C4Context
title Typed C4
Person(customer, "Customer", "Uses the system")
System(system, "Internet Banking", "Core system")
Rel(customer, system, "Uses", "HTTPS")
"#;

    let svg = merman::render::render_svg_sync(&engine, input, parse_options, &layout, &svg_opts)
        .expect("render svg")
        .expect("diagram detected");

    assert!(svg.contains("typed_c4"));
    assert!(svg.contains("c4"));
}