ruby-graphviz 1.0.7 → 1.0.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. data/CHANGELOG.rdoc +4 -0
  2. data/bin/dot2ruby +5 -5
  3. data/bin/gem2gv +18 -18
  4. data/bin/git2gv +20 -20
  5. data/bin/ruby2gv +26 -26
  6. data/bin/xml2gv +5 -5
  7. data/examples/sample06.rb +5 -5
  8. data/examples/sample12.rb +3 -3
  9. data/examples/sample13.rb +8 -8
  10. data/examples/sample14.rb +8 -8
  11. data/examples/sample15.rb +1 -1
  12. data/examples/sample17.rb +7 -7
  13. data/examples/sample19.rb +10 -10
  14. data/examples/sample20.rb +2 -2
  15. data/examples/sample21.rb +1 -1
  16. data/examples/sample28.rb +1 -1
  17. data/examples/sample31.rb +1 -1
  18. data/examples/sample33.rb +10 -10
  19. data/examples/sample34.rb +1 -1
  20. data/examples/sample35.rb +7 -7
  21. data/examples/sample36.rb +2 -2
  22. data/examples/sample40.rb +4 -4
  23. data/examples/sample44.rb +72 -72
  24. data/examples/sample45.rb +4 -4
  25. data/examples/sample48.rb +7 -7
  26. data/examples/sample50.rb +1 -1
  27. data/examples/sample52.rb +2 -2
  28. data/examples/sample53.rb +2 -2
  29. data/examples/sample54.rb +3 -3
  30. data/examples/sample60.rb +2 -2
  31. data/examples/sample61.rb +2 -2
  32. data/examples/sample62.rb +2 -2
  33. data/examples/sample99.rb +15 -15
  34. data/examples/theory/pert.rb +2 -2
  35. data/examples/theory/tests.rb +2 -2
  36. data/lib/graphviz.rb +140 -140
  37. data/lib/graphviz/attrs.rb +6 -11
  38. data/lib/graphviz/constants.rb +35 -35
  39. data/lib/graphviz/core_ext.rb +1 -1
  40. data/lib/graphviz/dot2ruby.rb +7 -7
  41. data/lib/graphviz/dsl.rb +5 -5
  42. data/lib/graphviz/edge.rb +13 -13
  43. data/lib/graphviz/elements.rb +5 -5
  44. data/lib/graphviz/ext.rb +1 -1
  45. data/lib/graphviz/family_tree.rb +15 -15
  46. data/lib/graphviz/family_tree/couple.rb +11 -11
  47. data/lib/graphviz/family_tree/generation.rb +6 -6
  48. data/lib/graphviz/family_tree/person.rb +13 -13
  49. data/lib/graphviz/graphml.rb +39 -39
  50. data/lib/graphviz/math/matrix.rb +23 -23
  51. data/lib/graphviz/node.rb +8 -8
  52. data/lib/graphviz/nothugly.rb +3 -3
  53. data/lib/graphviz/theory.rb +8 -8
  54. data/lib/graphviz/types.rb +3 -3
  55. data/lib/graphviz/types/arrow_type.rb +3 -3
  56. data/lib/graphviz/types/color.rb +2 -2
  57. data/lib/graphviz/types/color_list.rb +2 -2
  58. data/lib/graphviz/types/esc_string.rb +2 -2
  59. data/lib/graphviz/types/gv_bool.rb +3 -3
  60. data/lib/graphviz/types/gv_double.rb +3 -3
  61. data/lib/graphviz/types/html_string.rb +2 -2
  62. data/lib/graphviz/types/lbl_string.rb +2 -2
  63. data/lib/graphviz/types/rect.rb +2 -2
  64. data/lib/graphviz/types/spline_type.rb +9 -9
  65. data/lib/graphviz/utils.rb +13 -13
  66. data/lib/graphviz/utils/colors.rb +35 -35
  67. data/lib/graphviz/xml.rb +24 -24
  68. data/setup.rb +4 -4
  69. data/test/test_graph.rb +9 -9
  70. data/test/test_subgraph.rb +1 -1
  71. data/test/test_theory.rb +4 -4
  72. data/test/test_utils_colors.rb +4 -4
  73. metadata +2 -2
@@ -1,15 +1,15 @@
1
1
  # Copyright (C) 2004 - 2012 Gregoire Lejeune <gregoire.lejeune@free.fr>
2
- #
2
+ #
3
3
  # This program is free software; you can redistribute it and/or modify
4
4
  # it under the terms of the GNU General Public License as published by
5
5
  # the Free Software Foundation; either version 2 of the License, or
6
6
  # (at your option) any later version.
7
- #
7
+ #
8
8
  # This program is distributed in the hope that it will be useful,
9
9
  # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
10
  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
11
  # GNU General Public License for more details.
12
- #
12
+ #
13
13
  # You should have received a copy of the GNU General Public License
14
14
  # along with this program; if not, write to the Free Software
15
15
  # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
@@ -44,9 +44,6 @@ class GraphViz
44
44
  self[k] = v
45
45
  end
46
46
  else
47
- if @data.key?( key.to_s ) == false
48
- nil
49
- end
50
47
  @data[key.to_s]
51
48
  end
52
49
  end
@@ -66,12 +63,10 @@ class GraphViz
66
63
  rescue => e
67
64
  raise AttributeException, "Invalide value `#{value}` for attribute `#{key}` : #{e}"
68
65
  end
69
- unless value.nil?
70
- @data[key.to_s] = value
71
66
 
72
- if @graphviz.nil? == false
73
- @graphviz.set_position( @name, key.to_s, @data[key.to_s] )
74
- end
67
+ if value
68
+ @data[key.to_s] = value
69
+ @graphviz.set_position( @name, key.to_s, @data[key.to_s] ) if @graphviz
75
70
  end
76
71
  end
77
72
  end
@@ -1,30 +1,30 @@
1
1
  # Copyright (C) 2004 - 2012 Gregoire Lejeune <gregoire.lejeune@free.fr>
2
- #
2
+ #
3
3
  # This program is free software; you can redistribute it and/or modify
4
4
  # it under the terms of the GNU General Public License as published by
5
5
  # the Free Software Foundation; either version 2 of the License, or
6
6
  # (at your option) any later version.
7
- #
7
+ #
8
8
  # This program is distributed in the hope that it will be useful,
9
9
  # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
10
  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
11
  # GNU General Public License for more details.
12
- #
12
+ #
13
13
  # You should have received a copy of the GNU General Public License
14
14
  # along with this program; if not, write to the Free Software
15
15
  # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16
16
 
17
17
  # Constants for ruby-graphviz
18
- #
18
+ #
19
19
  # Constants::FORMATS: the possible output formats
20
- # "bmp", "canon", "dot", "xdot", "cmap", "dia", "eps",
20
+ # "bmp", "canon", "dot", "xdot", "cmap", "dia", "eps",
21
21
  # "fig", "gd", "gd2", "gif", "gtk", "hpgl", "ico", "imap",
22
22
  # "cmapx", "imap_np", "cmapx_np", "ismap", "jpeg", "jpg",
23
23
  # "jpe", "mif", "mp", "pcl", "pdf", "pic", "plain",
24
24
  # "plain-ext", "png", "ps", "ps2", "svg", "svgz", "tga",
25
25
  # "tiff", "tif", "vml", "vmlz", "vrml", "vtx", "wbmp",
26
- # "xlib", "none"
27
- #
26
+ # "xlib", "none"
27
+ #
28
28
  # Constants::PROGRAMS: The possible programs
29
29
  # "dot", "neato", "twopi", "fdp", "circo"
30
30
  #
@@ -33,22 +33,22 @@
33
33
  #
34
34
  #
35
35
  # The single letter codes used in constructors map as follows:
36
- # G => The root graph, with GRAPHATTRS
36
+ # G => The root graph, with GRAPHATTRS
37
37
  # E => Edge, with EDGESATTRS
38
38
  # N => Node, with NODESATTRS
39
39
  # S => subgraph
40
40
  # C => cluster
41
41
  #
42
42
  module Constants
43
- RGV_VERSION = "1.0.7"
44
-
43
+ RGV_VERSION = "1.0.8"
44
+
45
45
  ## Const: Output formats
46
46
  FORMATS = [
47
47
  "bmp",
48
48
  "canon",
49
- "dot",
49
+ "dot",
50
50
  "xdot",
51
- "cmap",
51
+ "cmap",
52
52
  "dia",
53
53
  "eps",
54
54
  "fig",
@@ -56,37 +56,37 @@ module Constants
56
56
  "gd2",
57
57
  "gif",
58
58
  "gtk",
59
- "hpgl",
59
+ "hpgl",
60
60
  "ico",
61
- "imap",
61
+ "imap",
62
62
  "cmapx",
63
- "imap_np",
63
+ "imap_np",
64
64
  "cmapx_np",
65
- "ismap",
66
- "jpeg",
67
- "jpg",
68
- "jpe",
69
- "mif",
65
+ "ismap",
66
+ "jpeg",
67
+ "jpg",
68
+ "jpe",
69
+ "mif",
70
70
  "mp",
71
- "pcl",
71
+ "pcl",
72
72
  "pdf",
73
- "pic",
74
- "plain",
73
+ "pic",
74
+ "plain",
75
75
  "plain-ext",
76
- "png",
77
- "ps",
76
+ "png",
77
+ "ps",
78
78
  "ps2",
79
- "svg",
79
+ "svg",
80
80
  "svgz",
81
81
  "tga",
82
82
  "tiff",
83
83
  "tif",
84
84
  "vml",
85
85
  "vmlz",
86
- "vrml",
87
- "vtx",
88
- "wbmp",
89
- "xlib",
86
+ "vrml",
87
+ "vtx",
88
+ "wbmp",
89
+ "xlib",
90
90
  "none"
91
91
  ]
92
92
 
@@ -114,7 +114,7 @@ module Constants
114
114
  }
115
115
  list
116
116
  end
117
-
117
+
118
118
  # E, N, G, S and C represent edges, nodes, the root graph, subgraphs and cluster subgraphs, respectively
119
119
  GENCS_ATTRS = {
120
120
  "Damping" => { :usedBy => "G", :type => :GvDouble },
@@ -142,8 +142,8 @@ module Constants
142
142
  "dimen" => { :usedBy => "G", :type => :EscString }, # int
143
143
  "dir" => { :usedBy => "E", :type => :EscString }, # dirType
144
144
  "diredgeconstraints" => { :usedBy => "G", :type => :EscString }, # string, bool
145
- "distortion" => { :usedBy => "N", :type => :GvDouble },
146
- "dpi" => { :usedBy => "G", :type => :GvDouble },
145
+ "distortion" => { :usedBy => "N", :type => :GvDouble },
146
+ "dpi" => { :usedBy => "G", :type => :GvDouble },
147
147
  "edgeURL" => { :usedBy => "E", :type => :EscString },
148
148
  "edgehref" => { :usedBy => "E", :type => :EscString },
149
149
  "edgetarget" => { :usedBy => "E", :type => :EscString },
@@ -161,7 +161,7 @@ module Constants
161
161
  "headURL" => { :usedBy => "E", :type => :EscString },
162
162
  "headclip" => { :usedBy => "E", :type => :GvBool }, # bool
163
163
  "headhref" => { :usedBy => "E", :type => :EscString },
164
- "headlabel" => { :usedBy => "E", :type => :EscString }, # LblString
164
+ "headlabel" => { :usedBy => "E", :type => :EscString }, # LblString
165
165
  "headport" => { :usedBy => "E", :type => :EscString }, # portPos
166
166
  "headtarget" => { :usedBy => "E", :type => :EscString },
167
167
  "headtooltip" => { :usedBy => "E", :type => :EscString },
@@ -189,7 +189,7 @@ module Constants
189
189
  "layers" => { :usedBy => "G", :type => :EscString }, # layerList
190
190
  "layersep" => { :usedBy => "G", :type => :EscString }, # string
191
191
  "layout" => { :usedBy => "G", :type => :EscString }, # string
192
- "len" => { :usedBy => "E", :type => :GvDouble },
192
+ "len" => { :usedBy => "E", :type => :GvDouble },
193
193
  "levels" => { :usedBy => "G", :type => :EscString }, # int
194
194
  "levelsgap" => { :usedBy => "G", :type => :GvDouble },
195
195
  "lhead" => { :usedBy => "E", :type => :EscString }, # string
@@ -37,7 +37,7 @@ class Hash
37
37
  # :png => "file.png",
38
38
  # :svg => "file.svg"
39
39
  # }
40
- #
40
+ #
41
41
  # x.each_except( :key => [:none], :value => [/\.png$/] ) do |k, v|
42
42
  # puts "#{k} -> #{v}"
43
43
  # end
@@ -1,16 +1,16 @@
1
1
  #!/usr/bin/env ruby
2
2
  # Copyright (C) 2010 Gregoire Lejeune <gregoire.lejeune@free.fr>
3
- #
3
+ #
4
4
  # This program is free software; you can redistribute it and/or modify
5
5
  # it under the terms of the GNU General Public License as published by
6
6
  # the Free Software Foundation; either version 2 of the License, or
7
7
  # (at your option) any later version.
8
- #
8
+ #
9
9
  # This program is distributed in the hope that it will be useful,
10
10
  # but WITHOUT ANY WARRANTY; without even the implied warranty of
11
11
  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
12
  # GNU General Public License for more details.
13
- #
13
+ #
14
14
  # You should have received a copy of the GNU General Public License
15
15
  # along with this program; if not, write to the Free Software
16
16
  # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
@@ -20,7 +20,7 @@ require 'graphviz/utils'
20
20
 
21
21
  class Dot2Ruby #:nodoc:
22
22
  include GVUtils
23
-
23
+
24
24
  def initialize( xGVPath, xOutFile, xOutFormat = nil ) #:nodoc:
25
25
  paths = (xGVPath.nil?) ? [] : [xGVPath]
26
26
  @xGvprPath = find_executable( 'gvpr', paths )
@@ -28,7 +28,7 @@ class Dot2Ruby #:nodoc:
28
28
  @xOutFormat = xOutFormat || "_"
29
29
  @gvprScript = GraphViz::Ext.find( "dot2ruby.g" )
30
30
  end
31
-
31
+
32
32
  def run( xFile ) #:nodoc:
33
33
  xCmd = "#{@xGvprPath} -f #{@gvprScript} -a #{@xOutFormat} #{xFile}"
34
34
  xOutput = output_from_command( xCmd )
@@ -38,9 +38,9 @@ class Dot2Ruby #:nodoc:
38
38
  File.open( @xOutFile, "w" ) do |io|
39
39
  io.print xOutput
40
40
  end
41
- end
41
+ end
42
42
  end
43
-
43
+
44
44
  def eval( xFile ) #:nodoc:
45
45
  xCmd = "#{@xGvprPath} -f #{@gvprScript} -a \"-\" #{xFile}"
46
46
  xOutput = output_from_command( xCmd )
data/lib/graphviz/dsl.rb CHANGED
@@ -39,29 +39,29 @@ class GraphViz::DSL
39
39
  end
40
40
 
41
41
  # Add a subgraph
42
- def subgraph(name, &block)
42
+ def subgraph(name, &block)
43
43
  @graph.add_graph(GraphViz::DSL.new(name, { :parent => @graph, :type => @graph.type }, &block).graph)
44
44
  end
45
45
  alias :cluster :subgraph
46
46
 
47
47
  # Generate output
48
- def output(options = {})
48
+ def output(options = {})
49
49
  @graph.output(options)
50
50
  end
51
51
  end
52
52
 
53
53
  # Create a new undirected graph
54
- def graph(name, options = {}, &block)
54
+ def graph(name, options = {}, &block)
55
55
  GraphViz::DSL.new(name, options.merge( { :type => "graph" } ), &block).graph
56
56
  end
57
57
 
58
58
  # Create a new directed graph
59
- def digraph(name, options = {}, &block)
59
+ def digraph(name, options = {}, &block)
60
60
  GraphViz::DSL.new(name, options.merge( { :type => "digraph" } ), &block).graph
61
61
  end
62
62
 
63
63
  # Create a new strict directed graph
64
- def strict(name, options = {}, &block)
64
+ def strict(name, options = {}, &block)
65
65
  GraphViz::DSL.new(name, options.merge( { :type => "strict digraph" } ), &block).graph
66
66
  end
67
67
 
data/lib/graphviz/edge.rb CHANGED
@@ -1,15 +1,15 @@
1
1
  # Copyright (C) 2004 - 2012 Gregoire Lejeune <gregoire.lejeune@free.fr>
2
- #
2
+ #
3
3
  # This program is free software; you can redistribute it and/or modify
4
4
  # it under the terms of the GNU General Public License as published by
5
5
  # the Free Software Foundation; either version 2 of the License, or
6
6
  # (at your option) any later version.
7
- #
7
+ #
8
8
  # This program is distributed in the hope that it will be useful,
9
9
  # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
10
  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
11
  # GNU General Public License for more details.
12
- #
12
+ #
13
13
  # You should have received a copy of the GNU General Public License
14
14
  # along with this program; if not, write to the Free Software
15
15
  # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
@@ -22,11 +22,11 @@ class GraphViz
22
22
  include Constants
23
23
 
24
24
  # Create a new edge
25
- #
25
+ #
26
26
  # In:
27
27
  # * vNodeOne : First node (can be a GraphViz::Node or a node ID)
28
28
  # * vNodeTwo : Second node (can be a GraphViz::Node or a node ID)
29
- # * parent_graph : Graph
29
+ # * parent_graph : Graph
30
30
  def initialize( vNodeOne, vNodeTwo, parent_graph )
31
31
  @node_one_id, @node_one_port = getNodeNameAndPort( vNodeOne )
32
32
  @node_two_id, @node_two_port = getNodeNameAndPort( vNodeTwo )
@@ -35,7 +35,7 @@ class GraphViz
35
35
  @edge_attributes = GraphViz::Attrs::new( nil, "edge", EDGESATTRS )
36
36
  @index = nil
37
37
 
38
- unless @parent_graph.directed?
38
+ unless @parent_graph.directed?
39
39
  (@parent_graph.find_node(@node_one_id) || @parent_graph.add_nodes(@node_one_id)).incidents << (@parent_graph.find_node(@node_two_id) || @parent_graph.add_nodes(@node_two_id))
40
40
  (@parent_graph.find_node(@node_two_id) || @parent_graph.add_nodes(@node_two_id)).neighbors << (@parent_graph.find_node(@node_one_id) || @parent_graph.add_nodes(@node_one_id))
41
41
  end
@@ -45,7 +45,7 @@ class GraphViz
45
45
 
46
46
  # Return the node one as string (so with port if any)
47
47
  def node_one( with_port = true )
48
- if @node_one_port.nil? or with_port == false
48
+ if not (@node_one_port and with_port)
49
49
  GraphViz.escape(@node_one_id)
50
50
  else
51
51
  GraphViz.escape(@node_one_id, :force => true) + ":#{@node_one_port}"
@@ -55,9 +55,9 @@ class GraphViz
55
55
 
56
56
  # Return the node two as string (so with port if any)
57
57
  def node_two( with_port = true )
58
- if @node_two_port.nil? or with_port == false
59
- GraphViz.escape(@node_two_id)
60
- else
58
+ if not (@node_two_port and with_port)
59
+ GraphViz.escape(@node_two_id)
60
+ else
61
61
  GraphViz.escape(@node_two_id, :force => true) + ":#{@node_two_port}"
62
62
  end
63
63
  end
@@ -77,7 +77,7 @@ class GraphViz
77
77
  @edge_attributes[attribute_name.to_s] = attribute_value
78
78
  end
79
79
 
80
- # Set values for edge attributes or
80
+ # Set values for edge attributes or
81
81
  # get the value of the given edge attribute +attribute_name+
82
82
  def []( attribute_name )
83
83
  # Modification by axgle (http://github.com/axgle)
@@ -87,7 +87,7 @@ class GraphViz
87
87
  end
88
88
  else
89
89
  if @edge_attributes[attribute_name.to_s]
90
- @edge_attributes[attribute_name.to_s].clone
90
+ @edge_attributes[attribute_name.to_s].clone
91
91
  else
92
92
  nil
93
93
  end
@@ -95,7 +95,7 @@ class GraphViz
95
95
  end
96
96
 
97
97
  #
98
- # Calls block once for each attribute of the edge, passing the name and value to the
98
+ # Calls block once for each attribute of the edge, passing the name and value to the
99
99
  # block as a two-element array.
100
100
  #
101
101
  # If global is set to false, the block does not receive the attributes set globally
@@ -4,22 +4,22 @@ class GraphViz
4
4
  @elements = Array.new
5
5
  @elements_hash_by_type = Hash.new
6
6
  end
7
-
7
+
8
8
  def push( obj )
9
9
  @elements.push( obj )
10
10
  if @elements_hash_by_type[obj['type']].nil?
11
11
  @elements_hash_by_type[obj['type']] = Array.new
12
12
  end
13
-
13
+
14
14
  @elements_hash_by_type[obj['type']].push( obj )
15
15
  end
16
-
16
+
17
17
  def each( &b )
18
18
  @elements.each do |e|
19
19
  yield( e )
20
20
  end
21
21
  end
22
-
22
+
23
23
  def size_of( type )
24
24
  if @elements_hash_by_type[type].nil?
25
25
  return 0
@@ -27,7 +27,7 @@ class GraphViz
27
27
  return @elements_hash_by_type[type].size
28
28
  end
29
29
  end
30
-
30
+
31
31
  def []( index, type = nil )
32
32
  if type.nil?
33
33
  return @elements[index]
data/lib/graphviz/ext.rb CHANGED
@@ -10,7 +10,7 @@ class GraphViz
10
10
  found = path if File.basename( path ) == ext
11
11
  end
12
12
  end
13
-
13
+
14
14
  File.expand_path( found )
15
15
  end
16
16
  end
@@ -21,10 +21,10 @@ class GraphViz
21
21
  @generation_number = 0
22
22
  @generations = []
23
23
  @couples = {}
24
-
24
+
25
25
  instance_eval(&block) if block
26
26
  end
27
-
27
+
28
28
  # Add a new generation in the tree
29
29
  #
30
30
  # require 'graphviz/family_tree'
@@ -42,47 +42,47 @@ class GraphViz
42
42
  @generations << gen
43
43
  @generation_number += 1
44
44
  end
45
-
45
+
46
46
  def persons #:nodoc:
47
47
  @persons ||= {}
48
48
  end
49
-
49
+
50
50
  def add_couple( x, y, node ) #:nodoc:
51
51
  @couples[x] = {} if @couples[x].nil?
52
52
  @couples[x][y] = GraphViz::FamilyTree::Couple.new( @graph, node, [x, y] )
53
53
  @couples[y] = {} if @couples[y].nil?
54
54
  @couples[y][x] = @couples[x][y]
55
55
  end
56
-
56
+
57
57
  # Get a couple (GraphViz::FamilyTree::Couple)
58
- def couple( x, y )
58
+ def couple( x, y )
59
59
  @couples[x][y]
60
60
  end
61
-
61
+
62
62
  def method_missing(sym, *args, &block) #:nodoc:
63
63
  persons[sym.to_s]
64
64
  end
65
-
65
+
66
66
  # Family size
67
67
  def size
68
68
  @persons.size
69
69
  end
70
-
70
+
71
71
  # Get the graph
72
72
  def graph
73
73
  maxY = @generations.size
74
74
  biggestGen, maxX = biggestGenerationNumberAndSize
75
-
75
+
76
76
  puts "#{maxY} generations"
77
77
  puts "Plus grosse generation : ##{biggestGen} avec #{maxX} personnes"
78
-
78
+
79
79
  puts "traitement des générations..."
80
-
80
+
81
81
  puts " #{biggestGen}:"
82
82
  @generations[biggestGen].persons.each do |id, person|
83
83
  puts " - #{id} : #{person.class}"
84
84
  end
85
-
85
+
86
86
  puts " Up..."
87
87
  (0...biggestGen).reverse_each do |genNumber|
88
88
  puts " #{genNumber}:"
@@ -98,10 +98,10 @@ class GraphViz
98
98
  puts " - #{id} : #{person.class}"
99
99
  end
100
100
  end
101
-
101
+
102
102
  @graph
103
103
  end
104
-
104
+
105
105
  private
106
106
  def biggestGenerationNumberAndSize
107
107
  size = 0