Class: Dige::GraphvizDiagram::UMLClassDiagram

Inherits:
Dige::GraphvizDiagram show all
Defined in:
lib/dige/graphviz_diagram/uml_class_diagram.rb

Constant Summary

Constants inherited from Dige::GraphvizDiagram

DEFAULT_NODE_HEIGHT, DEFAULT_NODE_WIDTH

Instance Attribute Summary

Attributes inherited from Dige::GraphvizDiagram

#associations, #klasses, #parent_child_relations

Instance Method Summary collapse

Methods inherited from Dige::GraphvizDiagram

#debug_inspect, #edge, #generate_diagram, #graph_settings, #header, #node, #node_settings, #quote, #random_color, #settings

Methods included from ClassBase

#initialize

Instance Method Details

#edge_settingsObject



2
3
4
5
6
7
# File 'lib/dige/graphviz_diagram/uml_class_diagram.rb', line 2

def edge_settings
  super.merge(
  {
    :arrowhead => :none
  })
end

#generate(file = ENV['FILE'], type = 'png') ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/dige/graphviz_diagram/uml_class_diagram.rb', line 9

def generate(file = ENV['FILE'], type = 'png')
  generate_diagram(file + "_uml_class_diagram", type) do
    assocs = associations.all.collect do |assoc|
      { :from => assoc.from_class_name, :to => assoc.to_class_name, :from_arity => assoc.from_arity, :to_arity => assoc.to_arity }
    end
    
    pcrs = parent_child_relations.all.collect do |pcr|
      { :from => pcr.child_class_name, :to => pcr.parent_class_name}
    end

    klasses.all.collect { |klass| node(klass.class_name, :associations_count => klass.associations_count) }.uniq.sort +
    pcrs.collect { |pcr| edge(pcr[:from], pcr[:to], true, {:color => random_color, :arrowhead => :empty}) }.uniq.sort + 
    assocs.collect { |ass| edge(ass[:from], ass[:to], true, { :color => random_color, :headlabel => ass[:to_arity], :taillabel => ass[:from_arity]}) }.uniq.sort
  end    
end