Sha256: 94831d3053daa1b79fb8b8d2893c79ae2c3d5a3774b7eb423538a8a67be620a7
Contents?: true
Size: 1.97 KB
Versions: 1
Compression:
Stored size: 1.97 KB
Contents
require_relative 'parent' require_relative 'nominator' require_relative 'registry' module Dogviz class System include Parent include Nominator attr_reader :render_hints, :title, :children, :graph alias :name :title alias :render_options :render_hints 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 end def output(*args) render out = graph.output *args puts "Created output: #{args.join ' '}" if run_from_command_line? out end def flow(name) Flow.new self, name end 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 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 def rollup? false end def skip? false end def register(name, thing) @by_name.register name, thing end def colorize_edges? @non_render_hints[:colorize_edges] end def auto_nominate? @non_render_hints[:auto_nominate] end private 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 def create_title(name) now = DateTime.now "#{now.strftime '%H:%M'} #{name} #{now.strftime '%F'}" end def run_from_command_line? $stdout.isatty end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
dogviz-0.0.21 | lib/dogviz/system.rb |