///|
fn dot_escape(value : String) -> String {
let mut out = ""
for c in value {
match c {
'"' => out = out + "\\\""
'\\' => out = out + "\\\\"
_ => out = out + c.to_string()
}
}
out
}
///|
pub fn graph_to_dot(graph : DependencyGraph) -> String {
let mut out = "digraph sheetsentry {\n rankdir=LR;\n node [shape=box, fontname=\"Helvetica\"];\n"
for from, targets in graph.edges {
out = out + " \"" + dot_escape(from) + "\";\n"
for target in targets {
out = out + " \"" + dot_escape(from) + "\" -> \"" + dot_escape(target) + "\";\n"
}
}
out + "}\n"
}
///|
pub fn graph_to_mermaid(graph : DependencyGraph) -> String {
let mut out = "graph LR\n"
for from, targets in graph.edges {
for target in targets {
out = out + " \"\{from}\" --> \"\{target}\"\n"
}
}
out
}