diff --git a/etch/src/svg.rs b/etch/src/svg.rs
index a6e52d9..2b9f94d 100644
--- a/etch/src/svg.rs
+++ b/etch/src/svg.rs
@@ -66,7 +66,9 @@ impl Default for SvgOptions {
/// The returned string is a complete, self-contained `\n");
@@ -216,18 +219,13 @@ fn write_edges(svg: &mut String, layout: &GraphLayout) {
svg.push_str(" \n");
}
-fn write_nodes(svg: &mut String, layout: &GraphLayout, options: &SvgOptions) {
- svg.push_str(" \n");
+fn write_nodes(svg: &mut String, layout: &GraphLayout, options: &SvgOptions, containers: bool) {
+ let class = if containers { "containers" } else { "nodes" };
+ writeln!(svg, " ").unwrap();
let default_fill = "#e8e8e8".to_string();
- // Draw containers first (background), then leaf nodes on top.
- let containers: Vec<&crate::layout::LayoutNode> =
- layout.nodes.iter().filter(|n| n.is_container).collect();
- let leaves: Vec<&crate::layout::LayoutNode> =
- layout.nodes.iter().filter(|n| !n.is_container).collect();
-
- for node in containers.iter().chain(leaves.iter()) {
+ for node in layout.nodes.iter().filter(|n| n.is_container == containers) {
let fill = options
.type_colors
.get(&node.node_type)