Provides a set of higher-order features on top of the raw GraphViz graphs
The image format to generate the graph in
The graph’s full filename
The name of the font to draw state names in
Adds a new edge to the graph. The font for the edge will be automatically set based on the graph configuration. The generated edge will be returned.
For example,
graph = StateMachine::Graph.new('test') graph.add_edges('parked', 'idling', :label => 'ignite')
# File lib/state_machine/graph.rb, line 75 def add_edges(*args) edge = v0_api? ? add_edge(*args) : super edge.fontname = @font edge end
Adds a new node to the graph. The font for the node will be automatically set based on the graph configuration. The generated node will be returned.
For example,
graph = StateMachine::Graph.new('test') graph.add_nodes('parked', :label => 'Parked', :width => '1', :height => '1', :shape => 'ellipse')
# File lib/state_machine/graph.rb, line 62 def add_nodes(*args) node = v0_api? ? add_node(*args) : super node.fontname = @font node end
Generates the actual image file based on the nodes / edges added to the graph. The path to the file is based on the configuration options for this graph.
# File lib/state_machine/graph.rb, line 51 def output super(@file_format => @file_path) end
Creates a new graph with the given name.
Configuration options:
:path - The path to write the graph file to. Default is the
current directory (“.”).
:format - The image format to generate the graph in. Default
is “png’.
:font - The name of the font to draw state names in. Default
is “Arial”.
:orientation - The direction of the graph (“portrait” or
“landscape”). Default is “portrait”.
# File lib/state_machine/graph.rb, line 37 def initialize(name, options = {}) options = {:path => '.', :format => 'png', :font => 'Arial', :orientation => 'portrait'}.merge(options) assert_valid_keys(options, :path, :format, :font, :orientation) @font = options[:font] @file_path = File.join(options[:path], "#{name}.#{options[:format]}") @file_format = options[:format] super('G', :rankdir => options[:orientation] == 'landscape' ? 'LR' : 'TB') end