Dagre layout engine implemented in MoonBit
moon add moonbit-community/moon_dagreimport {
"moonbit-community/moon_dagre" @dagre,
}///|
fn main {
let g = dagre.new_graph(directed=true, multigraph=true, compound=true)
g.set_node(
"a",
label=dagre
.empty_attrs()
.tap(n => {
n.set_float("width", 80.0)
n.set_float("height", 40.0)
}),
)
g.set_node(
"b",
label=dagre
.empty_attrs()
.tap(n => {
n.set_float("width", 80.0)
n.set_float("height", 40.0)
}),
)
g.set_edge("a", "b", label=dagre.attrs_value(dagre.empty_attrs()))
dagre.layout(g)
// Read computed coordinates from node labels:
// g.node("a").get_float("x"), g.node("a").get_float("y"), ...
}Dagre layout engine implemented in MoonBit