class Renderer::GraphViz

Public Class Methods

new(file_name, config) click to toggle source
# File lib/renderer/graphviz.rb, line 5
def initialize(file_name, config)
  @g = Graphviz::Graph.new('G', **{
    overlap: false,
    splines: true,
    sep: 1,
    concentrate: true,
    rankdir: "LR"
  })
  @file_name = file_name
  @config = config
end

Public Instance Methods

add_edge(from, to, opts) click to toggle source
# File lib/renderer/graphviz.rb, line 21
def add_edge(from, to, opts)
  from_node = create_if_missing(from)
  to_node = create_if_missing(to)
  options =  ({style: 'bold'}).merge(opts)
  from_node.connect(to_node, options)
end
add_node(name, opts) click to toggle source
# File lib/renderer/graphviz.rb, line 17
def add_node(name, opts)
  @g.add_node(name, label: name)
end
create_if_missing(name) click to toggle source
# File lib/renderer/graphviz.rb, line 28
def create_if_missing(name)
  n = @g.get_node(name).first
  n.nil? ? add_node(name, {}) : n
end
output() click to toggle source
# File lib/renderer/graphviz.rb, line 33
def output
  Graphviz::output(@g, path: @file_name, format: nil) #format: nil to force detection based on extension.
end