Class: GraphViz::FamilyTree
- Defined in:
- lib/graphviz/family_tree.rb,
 lib/graphviz/family_tree/couple.rb,
 lib/graphviz/family_tree/person.rb,
 lib/graphviz/family_tree/sibling.rb,
 lib/graphviz/family_tree/generation.rb
Defined Under Namespace
Classes: Couple, Generation, Person, Sibling
Instance Method Summary collapse
- 
  
    
      #add_couple(x, y, node)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    :nodoc:. 
- 
  
    
      #couple(x, y)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Get a couple (GraphViz::FamilyTree::Couple). 
- 
  
    
      #generation(&b)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Add a new generation in the tree. 
- 
  
    
      #graph  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Get the graph. 
- 
  
    
      #initialize(&block)  ⇒ FamilyTree 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    Create a new family tree. 
- 
  
    
      #method_missing(sym, *args, &block)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    :nodoc:. 
- 
  
    
      #persons  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    :nodoc:. 
- 
  
    
      #size  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Family size. 
Constructor Details
#initialize(&block) ⇒ FamilyTree
Create a new family tree
require 'graphviz/family_tree'
t = GraphViz::FamilyTree.new do
  ...
end
| 18 19 20 21 22 23 24 25 26 | # File 'lib/graphviz/family_tree.rb', line 18 def initialize( &block ) @persons = {} @graph = GraphViz.new( "FamilyTree", :use => :neato ) @generation_number = 0 @generations = [] @couples = {} instance_eval(&block) if block end | 
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(sym, *args, &block) ⇒ Object
:nodoc:
| 62 63 64 | # File 'lib/graphviz/family_tree.rb', line 62 def method_missing(sym, *args, &block) #:nodoc: persons[sym.to_s] end | 
Instance Method Details
#add_couple(x, y, node) ⇒ Object
:nodoc:
| 50 51 52 53 54 55 | # File 'lib/graphviz/family_tree.rb', line 50 def add_couple( x, y, node ) #:nodoc: @couples[x] = {} if @couples[x].nil? @couples[x][y] = GraphViz::FamilyTree::Couple.new( @graph, node, [x, y] ) @couples[y] = {} if @couples[y].nil? @couples[y][x] = @couples[x][y] end | 
#couple(x, y) ⇒ Object
Get a couple (GraphViz::FamilyTree::Couple)
| 58 59 60 | # File 'lib/graphviz/family_tree.rb', line 58 def couple( x, y ) @couples[x][y] end | 
#generation(&b) ⇒ Object
Add a new generation in the tree
require 'graphviz/family_tree'
t = GraphViz::FamilyTree.new do
  generation do
    ...
  end
  generation do
    ...
  end
end
| 39 40 41 42 43 44 | # File 'lib/graphviz/family_tree.rb', line 39 def generation( &b ) gen = GraphViz::FamilyTree::Generation.new( @graph, @persons, self, @generation_number ) gen.make( &b ) @generations << gen @generation_number += 1 end | 
#graph ⇒ Object
Get the graph
| 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 | # File 'lib/graphviz/family_tree.rb', line 72 def graph maxY = @generations.size biggestGen, maxX = biggestGenerationNumberAndSize puts "#{maxY} generations" puts "Plus grosse generation : ##{biggestGen} avec #{maxX} personnes" puts "traitement des générations..." puts " #{biggestGen}:" @generations[biggestGen].persons.each do |id, person| puts " - #{id} : #{person.class}" end puts " Up..." (0...biggestGen).reverse_each do |genNumber| puts " #{genNumber}:" @generations[genNumber].persons.each do |id, person| puts " - #{id} : #{person.class}" end end puts " Down..." ((biggestGen+1)...maxY).each do |genNumber| puts " #{genNumber}:" @generations[genNumber].persons.each do |id, person| puts " - #{id} : #{person.class}" end end @graph end | 
#persons ⇒ Object
:nodoc:
| 46 47 48 | # File 'lib/graphviz/family_tree.rb', line 46 def persons #:nodoc: @persons ||= {} end | 
#size ⇒ Object
Family size
| 67 68 69 | # File 'lib/graphviz/family_tree.rb', line 67 def size @persons.size end |