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