From 84f164cc8ba804d97f852fafb9aa5ddf4497f6a3 Mon Sep 17 00:00:00 2001
From: David Chandek-Stark <david.chandek.stark@duke.edu>
Date: Mon, 11 Nov 2024 12:13:55 -0500
Subject: [PATCH] Limit keys from state and event meta hashes passed to draw
 methods (fixes #236)

---
 lib/workflow/event.rb | 6 +++++-
 lib/workflow/state.rb | 4 +++-
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/lib/workflow/event.rb b/lib/workflow/event.rb
index 341c7e5..69be810 100644
--- a/lib/workflow/event.rb
+++ b/lib/workflow/event.rb
@@ -38,7 +38,11 @@ def condition_applicable?(object, event_arguments)
     end
 
     def draw(graph, from_state)
-      graph.add_edges(from_state.name.to_s, transitions_to.to_s, meta.merge(:label => to_s))
+      edgesattrs = GraphViz::Constants::EDGESATTRS.keys.map(&:to_sym)
+
+      defaults = { label: to_s }
+
+      graph.add_edges(from_state.name.to_s, transitions_to.to_s, defaults.merge(meta.slice(*edgesattrs)))
     end
 
     def to_s
diff --git a/lib/workflow/state.rb b/lib/workflow/state.rb
index f8e14e9..4fa585e 100644
--- a/lib/workflow/state.rb
+++ b/lib/workflow/state.rb
@@ -15,7 +15,9 @@ def draw(graph)
         :shape => 'ellipse'
       }
 
-      node = graph.add_nodes(to_s, defaults.merge(meta))
+      nodesattrs = GraphViz::Constants::NODESATTRS.keys.map(&:to_sym)
+
+      node = graph.add_nodes(to_s, defaults.merge(meta.slice(*nodesattrs)))
 
       # Add open arrow for initial state
       # graph.add_edge(graph.add_node('starting_state', :shape => 'point'), node) if initial?