class Dogviz::System

Attributes

children[R]
graph[R]
name[R]
render_hints[R]
render_options[R]
title[R]

Public Class Methods

new(name, hints = {splines: 'line'}) click to toggle source
# File lib/dogviz/system.rb, line 15
def initialize(name, hints = {splines: 'line'})
  @children = []
  @by_name = Registry.new name
  @non_render_hints = remove_dogviz_hints!(hints)
  @render_hints = hints
  @title = create_title(name)
  @rendered = false
  
  @warnings = Set.new
  @messages = Set.new
  
  @suppress_warnings = false
  @suppress_messages = false
  
  on_exit {
    output_messages
    output_warnings
  }
end

Public Instance Methods

auto_nominate?() click to toggle source
# File lib/dogviz/system.rb, line 87
def auto_nominate?
  @non_render_hints[:auto_nominate]
end
colorize_edges?() click to toggle source
# File lib/dogviz/system.rb, line 83
def colorize_edges?
  @non_render_hints[:colorize_edges]
end
create_renderer(type) click to toggle source
# File lib/dogviz/system.rb, line 60
def create_renderer(type)
  if type == :graphviz
    GraphvizRenderer.new @title, render_hints
  elsif type == :sigma
    SigmaRenderer.new @title
  else
    raise "dunno bout that '#{type}', only know :graphviz or :sigma"
  end

end
flow(name) click to toggle source
# File lib/dogviz/system.rb, line 42
def flow(name)
  Flow.new self, name
end
messages() click to toggle source
# File lib/dogviz/system.rb, line 99
def messages
  @messages.to_a
end
output(*args) click to toggle source
# File lib/dogviz/system.rb, line 35
def output(*args)
  render
  out = graph.output(*args)
  @messages << "Created output: #{args.join ' '}" unless suppress_messages?
  out
end
register(name, thing) click to toggle source
# File lib/dogviz/system.rb, line 79
def register(name, thing)
  @by_name.register name, thing
end
render(type=:graphviz) click to toggle source
# File lib/dogviz/system.rb, line 46
def render(type=:graphviz)
  return @graph if @rendered
  renderer = create_renderer(type)

  children.each { |c|
    c.render renderer
  }
  children.each { |c|
    c.render_edges renderer
  }
  @rendered = true
  @graph = renderer.graph
end
rollup?() click to toggle source
# File lib/dogviz/system.rb, line 71
def rollup?
  false
end
skip?() click to toggle source
# File lib/dogviz/system.rb, line 75
def skip?
  false
end
suppress_messages!() click to toggle source
# File lib/dogviz/system.rb, line 108
def suppress_messages!
  @suppress_messages = true
  self
end
suppress_warnings!() click to toggle source
# File lib/dogviz/system.rb, line 103
def suppress_warnings!
  @suppress_warnings = true
  self
end
warn_on_exit(warning) click to toggle source
# File lib/dogviz/system.rb, line 91
def warn_on_exit(warning)
  @warnings << warning
end
warnings() click to toggle source
# File lib/dogviz/system.rb, line 95
def warnings
  @warnings.to_a
end

Private Instance Methods

create_title(name) click to toggle source
# File lib/dogviz/system.rb, line 151
def create_title(name)
  now = DateTime.now
  "#{now.strftime '%H:%M'} #{name} #{now.strftime '%F'}"
end
on_exit(&block) click to toggle source
# File lib/dogviz/system.rb, line 115
def on_exit(&block)
  Kernel.at_exit(&block)
end
output_messages() click to toggle source
# File lib/dogviz/system.rb, line 119
def output_messages
  unless suppress_messages?
    messages.each {|message|
      STDERR.puts message
    }
  end
end
output_warnings() click to toggle source
# File lib/dogviz/system.rb, line 127
def output_warnings
  unless suppress_warnings?
    warnings.each {|warning|
      STDERR.puts warning
    }
  end
end
remove_dogviz_hints!(hints) click to toggle source
# File lib/dogviz/system.rb, line 143
def remove_dogviz_hints!(hints)
  dogviz_only_hints = {}
  %i(colorize_edges auto_nominate).each { |k|
    dogviz_only_hints[k] = hints.delete k
  }
  dogviz_only_hints
end
suppress_messages?() click to toggle source
# File lib/dogviz/system.rb, line 139
def suppress_messages?
  @suppress_messages
end
suppress_warnings?() click to toggle source
# File lib/dogviz/system.rb, line 135
def suppress_warnings?
  @suppress_warnings
end