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.
- data/CHANGELOG.rdoc +4 -0
- data/bin/dot2ruby +5 -5
- data/bin/gem2gv +18 -18
- data/bin/git2gv +20 -20
- data/bin/ruby2gv +26 -26
- data/bin/xml2gv +5 -5
- data/examples/sample06.rb +5 -5
- data/examples/sample12.rb +3 -3
- data/examples/sample13.rb +8 -8
- data/examples/sample14.rb +8 -8
- data/examples/sample15.rb +1 -1
- data/examples/sample17.rb +7 -7
- data/examples/sample19.rb +10 -10
- data/examples/sample20.rb +2 -2
- data/examples/sample21.rb +1 -1
- data/examples/sample28.rb +1 -1
- data/examples/sample31.rb +1 -1
- data/examples/sample33.rb +10 -10
- data/examples/sample34.rb +1 -1
- data/examples/sample35.rb +7 -7
- data/examples/sample36.rb +2 -2
- data/examples/sample40.rb +4 -4
- data/examples/sample44.rb +72 -72
- data/examples/sample45.rb +4 -4
- data/examples/sample48.rb +7 -7
- data/examples/sample50.rb +1 -1
- data/examples/sample52.rb +2 -2
- data/examples/sample53.rb +2 -2
- data/examples/sample54.rb +3 -3
- data/examples/sample60.rb +2 -2
- data/examples/sample61.rb +2 -2
- data/examples/sample62.rb +2 -2
- data/examples/sample99.rb +15 -15
- data/examples/theory/pert.rb +2 -2
- data/examples/theory/tests.rb +2 -2
- data/lib/graphviz.rb +140 -140
- data/lib/graphviz/attrs.rb +6 -11
- data/lib/graphviz/constants.rb +35 -35
- data/lib/graphviz/core_ext.rb +1 -1
- data/lib/graphviz/dot2ruby.rb +7 -7
- data/lib/graphviz/dsl.rb +5 -5
- data/lib/graphviz/edge.rb +13 -13
- data/lib/graphviz/elements.rb +5 -5
- data/lib/graphviz/ext.rb +1 -1
- data/lib/graphviz/family_tree.rb +15 -15
- data/lib/graphviz/family_tree/couple.rb +11 -11
- data/lib/graphviz/family_tree/generation.rb +6 -6
- data/lib/graphviz/family_tree/person.rb +13 -13
- data/lib/graphviz/graphml.rb +39 -39
- data/lib/graphviz/math/matrix.rb +23 -23
- data/lib/graphviz/node.rb +8 -8
- data/lib/graphviz/nothugly.rb +3 -3
- data/lib/graphviz/theory.rb +8 -8
- data/lib/graphviz/types.rb +3 -3
- data/lib/graphviz/types/arrow_type.rb +3 -3
- data/lib/graphviz/types/color.rb +2 -2
- data/lib/graphviz/types/color_list.rb +2 -2
- data/lib/graphviz/types/esc_string.rb +2 -2
- data/lib/graphviz/types/gv_bool.rb +3 -3
- data/lib/graphviz/types/gv_double.rb +3 -3
- data/lib/graphviz/types/html_string.rb +2 -2
- data/lib/graphviz/types/lbl_string.rb +2 -2
- data/lib/graphviz/types/rect.rb +2 -2
- data/lib/graphviz/types/spline_type.rb +9 -9
- data/lib/graphviz/utils.rb +13 -13
- data/lib/graphviz/utils/colors.rb +35 -35
- data/lib/graphviz/xml.rb +24 -24
- data/setup.rb +4 -4
- data/test/test_graph.rb +9 -9
- data/test/test_subgraph.rb +1 -1
- data/test/test_theory.rb +4 -4
- data/test/test_utils_colors.rb +4 -4
- metadata +2 -2
data/lib/graphviz/attrs.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
|
@@ -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
|
-
|
73
|
-
|
74
|
-
|
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
|
data/lib/graphviz/constants.rb
CHANGED
@@ -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.
|
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
|
data/lib/graphviz/core_ext.rb
CHANGED
data/lib/graphviz/dot2ruby.rb
CHANGED
@@ -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
|
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
|
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
|
data/lib/graphviz/elements.rb
CHANGED
@@ -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
data/lib/graphviz/family_tree.rb
CHANGED
@@ -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
|