From a05f713dc11a543ea97c1160990552260618f629 Mon Sep 17 00:00:00 2001 From: "Kartik K. Agaram" Date: Fri, 18 Mar 2022 18:02:07 -0700 Subject: [PATCH] graphviz: tweak data structure slightly A node's edges contain an associative array of target nodes rather than a linear array. This way we automatically dedup edges when we load multiple graphs. --- graphviz.tlv | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/graphviz.tlv b/graphviz.tlv index 5db0d23..941610e 100644 --- a/graphviz.tlv +++ b/graphviz.tlv @@ -738,10 +738,9 @@ > -- edge_stmt > local tok3 = tokens:read() > if graph[tok1] == nil then - > graph[tok1] = {tok3} - > else - > append(graph[tok1], {tok3}) + > graph[tok1] = {} > end + > graph[tok1][tok3] = true > elseif tok2 == '--' then > error('unexpected token "--" in digraph; edges should be directed using "->"') > elseif tok2 == '=' then @@ -808,7 +807,7 @@ >function sources(Graph) > local is_target = {} > for source, targets in pairs(Graph) do - > for _, target in ipairs(targets) do + > for target, _ in pairs(targets) do > is_target[target] = true > end > end