crawk 0.3.0

Dependency crawler for Rust. It crawls so you don't have to untangle
Documentation
use crawk::AnalysisResult;

use super::truncate_and_dedup;

/// Renders dependencies grouped by source module, sorted alphabetically by module name.
///
/// Each module name appears as a header line, followed by its dependencies indented
/// with ` - `. Within each group, duplicates produced by depth truncation are removed
/// and entries are sorted alphabetically.
pub(crate) fn render_grouped(result: &AnalysisResult, depth: Option<usize>) -> String {
    let dependencies = result.dependencies();
    let mut modules = dependencies.keys().cloned().collect::<Vec<_>>();
    modules.sort();

    let mut out = String::new();
    for module in modules {
        let display_name = if module.is_empty() {
            result.module_path()
        } else {
            module.as_str()
        };
        out.push_str(display_name);
        out.push('\n');
        for reference in truncate_and_dedup(&dependencies[&module], depth) {
            out.push_str(" - ");
            out.push_str(&reference);
            out.push('\n');
        }
    }
    out
}