merman 0.7.0-alpha.2

Parity-focused, headless Rust implementation of Mermaid for parsing, layout, and rendering.
Documentation
mod support;

use merman::render::HeadlessRenderer;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let input = support::read_mermaid_or_default(
        "example_01_svg_basic",
        r#"flowchart TD
    A[Mermaid source] --> B[HeadlessRenderer]
    B --> C[SVG string]
"#,
    )?;

    // Strict parsing surfaces malformed input early; the stable id helps when inlining the SVG.
    let renderer = HeadlessRenderer::new()
        .with_strict_parsing()
        .with_diagram_id("svg-basic-example");
    let Some(svg) = renderer.render_svg_sync(&input)? else {
        return Err("no Mermaid diagram detected".into());
    };

    print!("{svg}");
    Ok(())
}