cargo-treemap 0.1.0

Interactive treemap analyzer for Rust binary size and dependency API usage — like webpack-bundle-analyzer, for cargo.
//! Render the self-contained HTML report: CSS, JS and data are all inlined so the file
//! opens offline with no network access.

use super::safe_json;
use crate::apiusage::DepValue;
use crate::cli::Metric;
use crate::model::{Meta, Node};
use crate::parity::CrateRow;

pub fn render(
    root: &Node,
    meta: &Meta,
    deps: &[DepValue],
    crates: &[CrateRow],
    metric: Metric,
) -> String {
    let tmpl = include_str!("../../templates/report.html");
    let css = include_str!("../../templates/treemap.css");
    let js = include_str!("../../templates/treemap.js");

    tmpl.replace("/*__CSS__*/", css)
        .replace("/*__JS__*/", js)
        .replace("__TREEMAP_META__", &safe_json(meta))
        .replace("__TREEMAP_DEPS__", &safe_json(deps))
        .replace("__TREEMAP_CRATES__", &safe_json(crates))
        .replace("__TREEMAP_DATA__", &safe_json(root))
        .replace("__TREEMAP_METRIC__", metric.field())
}