use anyhow::anyhow;
use crate::analysis::dep_graph::{DepGraph, DepSet};
mod dot_parser;
pub fn parse_deps(input: &str) -> anyhow::Result<DepGraph> {
let val =
dot_parser::parse_deps(input).map_err(|e| anyhow!("Failed to parse dependencies: {e}"))?;
let mut graph = DepGraph::new();
for (parent, childs) in val.1 {
for child in childs {
graph.insert_child(parent.clone(), child);
}
}
Ok(graph)
}
pub fn uniq_nodes(input: &str) -> anyhow::Result<DepSet> {
let (_input, deps) =
dot_parser::parse_list(input).map_err(|e| anyhow!("Failed to parse list: {e}"))?;
let mut nodes = DepSet::new();
for value in deps {
nodes.insert(value);
}
Ok(nodes)
}