class Courgette::Graph2Dot
Attributes
dot[R]
Public Class Methods
new(&block)
click to toggle source
# File lib/courgette/graph2dot.rb, line 6 def initialize &block @dot = digraph &block end
Public Instance Methods
load(graph)
click to toggle source
# File lib/courgette/graph2dot.rb, line 10 def load graph calculate_distinct_namespaces graph.nodes set_colorscheme graph.nodes.each do |node| add_node node end graph.edges.each do |edge| add_edge edge end end
save(*args)
click to toggle source
# File lib/courgette/graph2dot.rb, line 23 def save *args dot.save *args end
Private Instance Methods
add_edge(edge)
click to toggle source
# File lib/courgette/graph2dot.rb, line 42 def add_edge edge dot.edge(label(edge.referrer), label(edge.reference)) end
add_node(node)
click to toggle source
# File lib/courgette/graph2dot.rb, line 38 def add_node node color(node) << dot.node(label(node)) end
calculate_distinct_namespaces(nodes)
click to toggle source
# File lib/courgette/graph2dot.rb, line 34 def calculate_distinct_namespaces nodes @grouper = Courgette::NodeGrouper.new nodes, 8 end
color(node)
click to toggle source
# File lib/courgette/graph2dot.rb, line 46 def color node idx = @grouper.group node dot.send "c#{idx}" end
label(node)
click to toggle source
# File lib/courgette/graph2dot.rb, line 52 def label node node.flatten.join("::") end
set_colorscheme()
click to toggle source
# File lib/courgette/graph2dot.rb, line 30 def set_colorscheme dot.colorscheme(:set2, [4, [8, @grouper.groups.count + 1].min].max) end