lib/end_state/graph.rb in end_state-0.12.0 vs lib/end_state/graph.rb in end_state-1.0.0
- old
+ new
@@ -8,21 +8,25 @@
@event_labels = event_labels
super machine.name.to_sym
end
def draw
- machine.transitions.keys.each do |t|
- left, right = t.to_a.flatten
- nodes[left] ||= add_nodes(left.to_s)
- nodes[right] ||= add_nodes(right.to_s)
- edge = add_edges nodes[left], nodes[right]
- if event_labels
- event = machine.events.detect do |event, transition|
- transition.include? t
- end
- edge[:label] = event.first.to_s if event
- end
- end
+ add_transitions
self
+ end
+
+ private
+
+ def add_transitions
+ machine.transition_configurations.each do |start_state, end_state, _, event|
+ add_transition(start_state, end_state, event)
+ end
+ end
+
+ def add_transition start_state, end_state, event
+ nodes[start_state] ||= add_node(start_state.to_s)
+ nodes[end_state] ||= add_node(end_state.to_s)
+ edge = add_edge nodes[start_state], nodes[end_state]
+ edge[:label] = event.to_s if event && event_labels
end
end
end