merman-render 0.8.0

Headless layout + SVG renderer for Mermaid (parity-focused; upstream SVG goldens).
Documentation
use super::super::*;
pub(crate) fn render_info_diagram_svg(
    layout: &InfoDiagramLayout,
    effective_config: &serde_json::Value,
    options: &SvgExecution<'_>,
) -> Result<root_svg::RootedSvg> {
    let diagram_id = options.diagram_id_or("merman");

    let mut out = String::new();
    let root_spec = root_svg::RootViewportSpec::responsive_without_view_box(400.0);
    let mut root_chrome = root_svg::RootChrome::new(diagram_id, "info");
    root_chrome.dom.trailing_newline = false;
    let root_document =
        root_svg::RootViewportContext::new(crate::family::RenderFamilyKind::Info, diagram_id)
            .write_open(&mut out, root_spec, root_chrome)?;
    options.checkpoint_emit()?;
    let css = info_css_with_config(diagram_id, effective_config);
    let _ = write!(&mut out, r#"<style>{}</style>"#, css);
    out.push_str(r#"<g/>"#);
    options.checkpoint_emit()?;
    let _ = write!(
        &mut out,
        r#"<g><text x="100" y="40" class="version" font-size="32" style="text-anchor: middle;">{}</text></g>"#,
        escape_xml(&layout.version)
    );
    out.push_str("</svg>\n");
    options.checkpoint_emit()?;
    root_document.complete(out)
}