class MikadoGraph::Generator
Attributes
graph[R]
prerequisites[R]
Public Class Methods
define(&block)
click to toggle source
# File lib/mikado_graph/generator.rb, line 7 def self.define(&block) generator_instance = new generator_instance.prerequisites.instance_eval(&block) generator_instance end
new()
click to toggle source
# File lib/mikado_graph/generator.rb, line 22 def initialize @prerequisites = Prerequisites.new initialize_graph end
Public Instance Methods
generate(options = {})
click to toggle source
# File lib/mikado_graph/generator.rb, line 13 def generate(options = {}) add_states_to_graph(prerequisites.states) arrange_graph_direction(options) output_options = build_output_options(options) graph.output(output_options) end
Private Instance Methods
add_prerequisite_dependency(state, dependent_state)
click to toggle source
# File lib/mikado_graph/generator.rb, line 43 def add_prerequisite_dependency(state, dependent_state) state_node = graph.add_nodes(state.name) dependent_state_node = graph.add_nodes(dependent_state.name) graph.add_edges(state_node, dependent_state_node) end
add_state_prerequisites(state)
click to toggle source
# File lib/mikado_graph/generator.rb, line 36 def add_state_prerequisites(state) state.prerequisite_states.each do |prerequisite_state| add_prerequisite_dependency(state, prerequisite_state) add_state_prerequisites(prerequisite_state) end end
add_states_to_graph(states)
click to toggle source
# File lib/mikado_graph/generator.rb, line 32 def add_states_to_graph(states) states.each { |state| add_state_prerequisites(state) } end
arrange_graph_direction(options)
click to toggle source
# File lib/mikado_graph/generator.rb, line 49 def arrange_graph_direction(options) direction = options.fetch(:direction, :vertical) graph[:rankdir] = "LR" if direction == :horizontal end
build_output_options(options)
click to toggle source
# File lib/mikado_graph/generator.rb, line 54 def build_output_options(options) output_options = {} output_options[options.fetch(:format, "dot")] = options.fetch(:path, nil) output_options end
initialize_graph()
click to toggle source
# File lib/mikado_graph/generator.rb, line 27 def initialize_graph @graph = GraphViz.new(nil) @graph.node[:shape] = "box" end