Class: AASMDiagram::Diagram
- Inherits:
-
Object
- Object
- AASMDiagram::Diagram
- Defined in:
- lib/aasm_diagram/diagram.rb
Overview
Save a diagram of a single AASM state machine to an image
Instance Method Summary collapse
- #draw ⇒ Object
- #draw_edges ⇒ Object
- #draw_nodes ⇒ Object
-
#initialize(aasm_instance, filename, type = :png) ⇒ Diagram
constructor
A new instance of Diagram.
- #save(filename) ⇒ Object
Constructor Details
#initialize(aasm_instance, filename, type = :png) ⇒ Diagram
Returns a new instance of Diagram.
6 7 8 9 10 11 |
# File 'lib/aasm_diagram/diagram.rb', line 6 def initialize(aasm_instance, filename, type=:png) @aasm_instance = aasm_instance @type = type draw save(filename) end |
Instance Method Details
#draw ⇒ Object
13 14 15 16 17 |
# File 'lib/aasm_diagram/diagram.rb', line 13 def draw @graphviz = GraphViz.new(:G, type: :digraph) draw_nodes draw_edges end |
#draw_edges ⇒ Object
25 26 27 28 29 30 31 32 33 34 |
# File 'lib/aasm_diagram/diagram.rb', line 25 def draw_edges events.each do |event| event.transitions.each do |transition| from = @graphviz.get_node(transition.from.to_s) to = @graphviz.get_node(transition.to.to_s) label = event.name.to_s @graphviz.add_edges(from, to, label: label) unless from.nil? end end end |
#draw_nodes ⇒ Object
19 20 21 22 23 |
# File 'lib/aasm_diagram/diagram.rb', line 19 def draw_nodes state_names.map do |state_name| @graphviz.add_nodes(state_name.to_s) end end |
#save(filename) ⇒ Object
36 37 38 |
# File 'lib/aasm_diagram/diagram.rb', line 36 def save(filename) @graphviz.output(@type => filename) end |