ruby-graphviz 0.9.1 → 0.9.2
Sign up to get free protection for your applications and to get access to all the features.
- data/AUTHORS +1 -1
- data/ChangeLog +5 -0
- data/README.rdoc +4 -4
- data/examples/HTML-Labels.rb +2 -2
- data/examples/arrowhead.rb +3 -3
- data/examples/dot/hello_test.rb +1 -1
- data/examples/graphviz.org/TrafficLights.rb +1 -1
- data/examples/graphviz.org/cluster.rb +1 -1
- data/examples/graphviz.org/hello_world.rb +1 -1
- data/examples/graphviz.org/lion_share.rb +1 -1
- data/examples/graphviz.org/process.rb +1 -1
- data/examples/p2p.rb +3 -3
- data/examples/sample07.rb +2 -2
- data/examples/sample11.rb +3 -3
- data/examples/sample12.rb +3 -3
- data/examples/sample13.rb +2 -2
- data/examples/sample14.rb +2 -2
- data/examples/sample15.rb +2 -2
- data/examples/sample16.rb +2 -2
- data/examples/sample17.rb +2 -2
- data/examples/sample18.rb +2 -2
- data/examples/sample19.rb +2 -2
- data/examples/sample20.rb +2 -2
- data/examples/sample21.rb +4 -4
- data/examples/sample23.rb +11 -0
- data/examples/shapes.rb +3 -3
- data/examples/testorder.rb +3 -3
- data/examples/testxml.rb +1 -1
- data/lib/graphviz.rb +44 -7
- data/lib/graphviz/constants.rb +1 -1
- data/lib/graphviz/edge.rb +6 -4
- data/lib/graphviz/node.rb +3 -2
- metadata +7 -3
data/AUTHORS
CHANGED
data/ChangeLog
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
0.9.2 :
|
2
|
+
* Escape nodes (by Dave Burt)
|
3
|
+
* Handle errors from graphviz command (by Dave Burt)
|
4
|
+
* Output as string (if String class is passed as file i.e. output(:pdf => String)) (by Dave Burt)
|
5
|
+
|
1
6
|
0.9.1 :
|
2
7
|
* Bugs corrections
|
3
8
|
* Add the ability to create edge like that : node1 << node2 << node3 ...
|
data/README.rdoc
CHANGED
@@ -26,7 +26,7 @@ A basic example
|
|
26
26
|
g.add_edge( hello, world )
|
27
27
|
|
28
28
|
# Generate output image
|
29
|
-
g.output( :
|
29
|
+
g.output( :png => "hello_world.png" )
|
30
30
|
|
31
31
|
The same but with a block
|
32
32
|
|
@@ -34,7 +34,7 @@ The same but with a block
|
|
34
34
|
|
35
35
|
GraphViz::new( :G, :type => :digraph ) { |g|
|
36
36
|
g.world( :label => "World" ) << g.hello( :label => Hello )
|
37
|
-
}.output( :
|
37
|
+
}.output( :png => "hello_world.png" )
|
38
38
|
|
39
39
|
Create a graph from a file
|
40
40
|
|
@@ -50,13 +50,13 @@ Create a graph from a file
|
|
50
50
|
g.get_node("World") { |n|
|
51
51
|
n[:label] = "Le Monde"
|
52
52
|
}
|
53
|
-
}.output(:
|
53
|
+
}.output(:png => "sample.png")
|
54
54
|
|
55
55
|
== INSTALLATION
|
56
56
|
|
57
57
|
sudo gem install ruby-graphviz
|
58
58
|
|
59
|
-
You also need to install GraphViz[http://www.graphviz.org]
|
59
|
+
You also need to install GraphViz[http://www.graphviz.org] and Treetop[http://treetop.rubyforge.org/]
|
60
60
|
|
61
61
|
== LICENCE
|
62
62
|
|
data/examples/HTML-Labels.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
$:.unshift( "../lib" );
|
2
2
|
require "graphviz"
|
3
3
|
|
4
|
-
g = GraphViz::new( "structs"
|
4
|
+
g = GraphViz::new( "structs" )
|
5
5
|
|
6
6
|
g.node["shape"] = "plaintext"
|
7
7
|
|
@@ -17,4 +17,4 @@ g.add_edge( "struct1:f2", "struct3:here" )
|
|
17
17
|
|
18
18
|
g.add_edge( "HTML", "struct1" )
|
19
19
|
|
20
|
-
g.output( :path => '/usr/local/bin/', :
|
20
|
+
g.output( :path => '/usr/local/bin/', :png => "#{$0}.png" )
|
data/examples/arrowhead.rb
CHANGED
@@ -5,9 +5,9 @@ require "graphviz"
|
|
5
5
|
|
6
6
|
g = nil
|
7
7
|
if ARGV[0]
|
8
|
-
g = GraphViz::new( "G", "
|
8
|
+
g = GraphViz::new( "G", "path" => ARGV[0] )
|
9
9
|
else
|
10
|
-
g = GraphViz::new( "G"
|
10
|
+
g = GraphViz::new( "G" )
|
11
11
|
end
|
12
12
|
|
13
13
|
g["rankdir"] = "LR"
|
@@ -94,4 +94,4 @@ g.edge["arrowhead"] = "normal"
|
|
94
94
|
g.add_edge( p, s, "arrowhead" => s )
|
95
95
|
}
|
96
96
|
|
97
|
-
g.output( :
|
97
|
+
g.output( :png => "#{$0}.png" )
|
data/examples/dot/hello_test.rb
CHANGED
@@ -59,4 +59,4 @@ GraphViz::new( "TrafficLights", :type => :digraph ) { |g|
|
|
59
59
|
g[:overlap] = :false
|
60
60
|
g[:label] = 'PetriNet Model TrafficLights\nExtracted from ConceptBase and layed out by Graphviz'
|
61
61
|
g[:fontsize] = 12;
|
62
|
-
}.output( :
|
62
|
+
}.output( :png => "TrafficLights.png" )
|
@@ -212,4 +212,4 @@ GraphViz::new( "Ped_Lion_Share", :type => :digraph ) { |g|
|
|
212
212
|
(g._026 << g.marr0017).set { |e| e[:dir] = :none; e[:weight] = 1 }
|
213
213
|
(g._027 << g.marr0017).set { |e| e[:dir] = :none; e[:weight] = 1 }
|
214
214
|
(g.marr0017 << g._028).set { |e| e[:dir] = :none; e[:weight] = 2 }
|
215
|
-
}.output( :
|
215
|
+
}.output( :png => "lion_share.png" )
|
data/examples/p2p.rb
CHANGED
@@ -5,9 +5,9 @@ require "graphviz"
|
|
5
5
|
|
6
6
|
g = nil
|
7
7
|
if ARGV[0]
|
8
|
-
g = GraphViz::new( "G", "
|
8
|
+
g = GraphViz::new( "G", "path" => ARGV[0], :use => "circo" )
|
9
9
|
else
|
10
|
-
g = GraphViz::new( "G"
|
10
|
+
g = GraphViz::new( "G" )
|
11
11
|
end
|
12
12
|
|
13
13
|
c0 = g.add_graph( "cluster0" )
|
@@ -32,4 +32,4 @@ g.add_edge( bp, jv, :color => "red", :label => "Est le beau fils de" ) # Beau fi
|
|
32
32
|
g.add_edge( bp, gr )
|
33
33
|
g.add_edge( gr, md )
|
34
34
|
|
35
|
-
g.output
|
35
|
+
g.output( :png => "p2p.png" )
|
data/examples/sample07.rb
CHANGED
@@ -9,7 +9,7 @@ if ARGV[0]
|
|
9
9
|
GraphViz::options( :path => ARGV[0] )
|
10
10
|
end
|
11
11
|
|
12
|
-
g = GraphViz::new( "structs"
|
12
|
+
g = GraphViz::new( "structs" )
|
13
13
|
|
14
14
|
g.node["shape"] = "record"
|
15
15
|
|
@@ -20,4 +20,4 @@ g.add_node( "struct3", "shape" => "record", "label" => 'hello\nworld |{ b |{c|<h
|
|
20
20
|
g.add_edge( "struct1:f1", "struct2:f0" )
|
21
21
|
g.add_edge( "struct1:f2", "struct3:here" )
|
22
22
|
|
23
|
-
g.output( :png => "#{$0}.png" )
|
23
|
+
g.output( :png => "#{$0}.png", :canon => nil )
|
data/examples/sample11.rb
CHANGED
@@ -5,9 +5,9 @@ require "graphviz"
|
|
5
5
|
|
6
6
|
graph = nil
|
7
7
|
if ARGV[0]
|
8
|
-
graph = GraphViz::new( "G", "
|
8
|
+
graph = GraphViz::new( "G", "path" => ARGV[0] )
|
9
9
|
else
|
10
|
-
graph = GraphViz::new( "G"
|
10
|
+
graph = GraphViz::new( "G" )
|
11
11
|
end
|
12
12
|
|
13
13
|
graph["compound"] = "true"
|
@@ -39,4 +39,4 @@ graph.add_edge( c, g, "ltail" => "cluster0", "lhead" => "cluster1" )
|
|
39
39
|
graph.add_edge( c, e, "ltail" => "cluster0" )
|
40
40
|
graph.add_edge( d, h )
|
41
41
|
|
42
|
-
graph.output( :
|
42
|
+
graph.output( :png => "#{$0}.png" )
|
data/examples/sample12.rb
CHANGED
@@ -5,9 +5,9 @@ require "graphviz"
|
|
5
5
|
|
6
6
|
g = nil
|
7
7
|
if ARGV[0]
|
8
|
-
g = GraphViz::new( "G", "
|
8
|
+
g = GraphViz::new( "G", "path" => ARGV[0] )
|
9
9
|
else
|
10
|
-
g = GraphViz::new( "G"
|
10
|
+
g = GraphViz::new( "G" )
|
11
11
|
end
|
12
12
|
|
13
13
|
g.node[:shape] = "ellipse"
|
@@ -52,4 +52,4 @@ g.cluster0.a3 << g.cluster0.a0
|
|
52
52
|
g.cluster0.a3 << g.endn
|
53
53
|
g.cluster1.b3 << g.endn
|
54
54
|
|
55
|
-
g.output( :
|
55
|
+
g.output( :png => "#{$0}.png" )
|
data/examples/sample13.rb
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
$:.unshift( "../lib" );
|
4
4
|
require "graphviz"
|
5
5
|
|
6
|
-
GraphViz::new( "G"
|
6
|
+
GraphViz::new( "G" ) { |graph|
|
7
7
|
graph.node[:shape] = "ellipse"
|
8
8
|
graph.node[:color] = "black"
|
9
9
|
|
@@ -45,4 +45,4 @@ GraphViz::new( "G", "output" => "png" ) { |graph|
|
|
45
45
|
graph.cluster0.a3 << graph.cluster0.a0
|
46
46
|
graph.cluster0.a3 << graph.endn
|
47
47
|
graph.cluster1.b3 << graph.endn
|
48
|
-
}.output( :path => '/usr/local/bin/', :
|
48
|
+
}.output( :path => '/usr/local/bin/', :png => "#{$0}.png" )
|
data/examples/sample14.rb
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
$:.unshift( "../lib" );
|
4
4
|
require "graphviz"
|
5
5
|
|
6
|
-
GraphViz::new( "G"
|
6
|
+
GraphViz::new( "G" ) { |graph|
|
7
7
|
graph.node[:shape] = "ellipse"
|
8
8
|
graph.node[:color] = "black"
|
9
9
|
|
@@ -41,4 +41,4 @@ GraphViz::new( "G", "output" => "png" ) { |graph|
|
|
41
41
|
graph.cluster0.a3 << graph.cluster0.a0
|
42
42
|
graph.cluster0.a3 << graph.endn
|
43
43
|
graph.cluster1.b3 << graph.endn
|
44
|
-
}.output( :path => '/usr/local/bin/', :
|
44
|
+
}.output( :path => '/usr/local/bin/', :png => "#{$0}.png" )
|
data/examples/sample15.rb
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
$:.unshift( "../lib" );
|
7
7
|
require "graphviz"
|
8
8
|
|
9
|
-
GraphViz::new( "G", :type => "graph", :
|
9
|
+
GraphViz::new( "G", :type => "graph", :use => "fdp" ) { |graph|
|
10
10
|
graph.e
|
11
11
|
graph.clusterA { |cA|
|
12
12
|
cA.a << cA.b
|
@@ -20,4 +20,4 @@ GraphViz::new( "G", :type => "graph", :output => "png", :use => "fdp" ) { |graph
|
|
20
20
|
graph.clusterB.d << graph.clusterA.clusterC._d
|
21
21
|
graph.e << graph.clusterB
|
22
22
|
graph.clusterA.clusterC << graph.clusterB
|
23
|
-
}.output( :path => '/usr/local/bin/', :
|
23
|
+
}.output( :path => '/usr/local/bin/', :png => "#{$0}.png" )
|
data/examples/sample16.rb
CHANGED
@@ -3,6 +3,6 @@
|
|
3
3
|
$:.unshift( "../lib" );
|
4
4
|
require "graphviz"
|
5
5
|
|
6
|
-
GraphViz::new( "G", :type => "graph", :
|
6
|
+
GraphViz::new( "G", :type => "graph", :rankdir => "LR" ) { |graph|
|
7
7
|
graph.add_edge( [graph.a, graph.b, graph.c], [ graph.d, graph.e, graph.f ] )
|
8
|
-
}.output( :path => '/usr/local/bin/', :
|
8
|
+
}.output( :path => '/usr/local/bin/', :png => "#{$0}.png" )
|
data/examples/sample17.rb
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
$:.unshift( "../lib" );
|
4
4
|
require "graphviz"
|
5
5
|
|
6
|
-
GraphViz::new( "G", :type => "graph", :
|
6
|
+
GraphViz::new( "G", :type => "graph", :rankdir => "LR", :bgcolor => "#808080" ) { |graph|
|
7
7
|
graph.edge[:dir] = "none"
|
8
8
|
|
9
9
|
graph.node[:width] = "0.3"
|
@@ -89,4 +89,4 @@ GraphViz::new( "G", :type => "graph", :output => "png", :rankdir => "LR", :bgcol
|
|
89
89
|
_["V"] << _["60"]
|
90
90
|
_["W"] << _["70"]
|
91
91
|
_["X"] << _["80"]
|
92
|
-
}.output( :path => '/usr/local/bin/', :
|
92
|
+
}.output( :path => '/usr/local/bin/', :png => "#{$0}.png" )
|
data/examples/sample18.rb
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
$:.unshift( "../lib" );
|
4
4
|
require "graphviz"
|
5
5
|
|
6
|
-
GraphViz::new( "G", :
|
6
|
+
GraphViz::new( "G", :rankdir => "LR", :size => "8,5" ) { |graph|
|
7
7
|
graph.node[:shape] = "doublecircle"
|
8
8
|
graph._LR_0; graph._LR_3; graph._LR_4; graph._LR_8
|
9
9
|
graph.node[:shape] = "circle"
|
@@ -21,4 +21,4 @@ GraphViz::new( "G", :output => "png", :rankdir => "LR", :size => "8,5" ) { |grap
|
|
21
21
|
(graph._LR_7 << graph._LR_5)[:label] = "S(a)"
|
22
22
|
(graph._LR_8 << graph._LR_6)[:label] = "S(b)"
|
23
23
|
(graph._LR_8 << graph._LR_5)[:label] = "S(a)"
|
24
|
-
}.output( :path => '/usr/local/bin/', :
|
24
|
+
}.output( :path => '/usr/local/bin/', :png => "#{$0}.png" )
|
data/examples/sample19.rb
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
$:.unshift( "../lib" );
|
4
4
|
require "graphviz"
|
5
5
|
|
6
|
-
GraphViz::new( "ER", :type => "graph", :
|
6
|
+
GraphViz::new( "ER", :type => "graph", :use => "neato" ) { |graph|
|
7
7
|
graph.node[:shape] = "box"
|
8
8
|
graph.course; graph.institute; graph.student
|
9
9
|
|
@@ -56,4 +56,4 @@ GraphViz::new( "ER", :type => "graph", :output => "png", :use => "neato" ) { |gr
|
|
56
56
|
|
57
57
|
graph[:label] = "\\n\\nEntity Relation Diagram\\ndrawn by NEATO";
|
58
58
|
graph[:fontsize] = "20";
|
59
|
-
}.output( :path => '/usr/local/bin/', :
|
59
|
+
}.output( :path => '/usr/local/bin/', :png => "#{$0}.png" )
|
data/examples/sample20.rb
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
$:.unshift( "../lib" );
|
4
4
|
require "graphviz"
|
5
5
|
|
6
|
-
GraphViz::options( :
|
6
|
+
GraphViz::options( :use => "dot" )
|
7
7
|
|
8
8
|
if ARGV[0]
|
9
9
|
GraphViz::options( :path => ARGV[0] )
|
@@ -44,4 +44,4 @@ GraphViz::new( "g", :rankdir => "LR", :type => "digraph" ) { |g|
|
|
44
44
|
g.add_edge( g.node10(:f1), g.node11(:f0) )
|
45
45
|
g.add_edge( g.node10(:f2), g.node12(:f0) )
|
46
46
|
g.add_edge( g.node11(:f2), g.node1(:f0) )
|
47
|
-
}.output( :
|
47
|
+
}.output( :png => "#{$0}.png" )
|
data/examples/sample21.rb
CHANGED
@@ -4,9 +4,9 @@ $:.unshift( "../lib" );
|
|
4
4
|
require "graphviz"
|
5
5
|
|
6
6
|
{"png" => "#{$0}.png", "imap" => "#{$0}.html"}.each do |format, file|
|
7
|
-
GraphViz::new( "G"
|
8
|
-
g.command
|
9
|
-
g._output(:label => "output"
|
7
|
+
GraphViz::new( "G" ) { |g|
|
8
|
+
g.command(:URL => "http://www.research.att.com/base.html")
|
9
|
+
g._output(:label => "output", :URL => "colors.html")
|
10
10
|
g.command << g._output
|
11
|
-
}.output(
|
11
|
+
}.output( format => file )
|
12
12
|
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
|
3
|
+
$:.unshift( "../lib" );
|
4
|
+
require "graphviz"
|
5
|
+
|
6
|
+
r = GraphViz::new( "mainmap" ) { |graph|
|
7
|
+
graph[:URL] = "http://www.research.att.com/base.html"
|
8
|
+
graph.command( :URL => "http://www.research.att.com/command.html" )
|
9
|
+
(graph.command << graph._output( :label => "output" ))[:URL] = "colors.html"
|
10
|
+
}
|
11
|
+
puts r.output( :cmapx => String, :png => "#{$0}.png" )
|
data/examples/shapes.rb
CHANGED
@@ -5,9 +5,9 @@ require "graphviz"
|
|
5
5
|
|
6
6
|
g = nil
|
7
7
|
if ARGV[0]
|
8
|
-
g = GraphViz::new( "G", "
|
8
|
+
g = GraphViz::new( "G", "path" => ARGV[0] )
|
9
9
|
else
|
10
|
-
g = GraphViz::new( "G"
|
10
|
+
g = GraphViz::new( "G" )
|
11
11
|
end
|
12
12
|
|
13
13
|
g.node["shape"] = "ellipse"
|
@@ -21,4 +21,4 @@ g.node["shape"] = "ellipse"
|
|
21
21
|
g.add_node( s, "shape" => s )
|
22
22
|
}
|
23
23
|
|
24
|
-
g.output( :
|
24
|
+
g.output( :png => "shapes.png")
|
data/examples/testorder.rb
CHANGED
@@ -5,9 +5,9 @@ require "graphviz"
|
|
5
5
|
|
6
6
|
g = nil
|
7
7
|
if ARGV[0]
|
8
|
-
g = GraphViz::new( "G", "
|
8
|
+
g = GraphViz::new( "G", "path" => ARGV[0] )
|
9
9
|
else
|
10
|
-
g = GraphViz::new( "G"
|
10
|
+
g = GraphViz::new( "G" )
|
11
11
|
end
|
12
12
|
|
13
13
|
g.node["color"] = "black"
|
@@ -40,4 +40,4 @@ g.add_edge( init, make_string )
|
|
40
40
|
g.add_edge( main, printf, "color" => "red", "style" => "bold", "label" => "100 times" )
|
41
41
|
g.add_edge( execute, compare, "color" => "red" )
|
42
42
|
|
43
|
-
g.output( :
|
43
|
+
g.output( :png => "#{$0}.png" )
|
data/examples/testxml.rb
CHANGED
@@ -4,4 +4,4 @@ $:.unshift( "../lib" )
|
|
4
4
|
require 'graphviz/xml'
|
5
5
|
|
6
6
|
gvxml = GraphViz::XML::new( "test.xml", :text => true, :attrs => true )
|
7
|
-
gvxml.output( :
|
7
|
+
gvxml.output( :png => "#{$0}.png", :use => "dot", :path => ARGV[0] )
|
data/lib/graphviz.rb
CHANGED
@@ -16,6 +16,7 @@
|
|
16
16
|
|
17
17
|
require 'tempfile'
|
18
18
|
require 'mkmf'
|
19
|
+
require 'open3'
|
19
20
|
|
20
21
|
require 'graphviz/node'
|
21
22
|
require 'graphviz/edge'
|
@@ -235,7 +236,10 @@ class GraphViz
|
|
235
236
|
# :file : Output file name
|
236
237
|
# :use : Program to use (Constants::PROGRAMS)
|
237
238
|
# :path : Program PATH
|
238
|
-
# :<format> =>
|
239
|
+
# :<format> => <file> : <file> can be
|
240
|
+
# * a file name
|
241
|
+
# * nil, then the output will be printed to STDOUT
|
242
|
+
# * String, then the output will be returned as a String
|
239
243
|
#
|
240
244
|
def output( *hOpt )
|
241
245
|
xDOTScript = ""
|
@@ -320,7 +324,7 @@ class GraphViz
|
|
320
324
|
else
|
321
325
|
if hOpt.nil? == false and hOpt[0].nil? == false
|
322
326
|
hOpt[0].each do |xKey, xValue|
|
323
|
-
xValue = xValue.to_s unless xValue.nil?
|
327
|
+
xValue = xValue.to_s unless xValue.nil? or xValue.class == Class
|
324
328
|
case xKey.to_s
|
325
329
|
when "output"
|
326
330
|
warn ":output option is deprecated, please use :<format> => :<file>"
|
@@ -349,7 +353,8 @@ class GraphViz
|
|
349
353
|
|
350
354
|
xDOTScript = "#{@oGraphType} #{@name} {\n" << xDOTScript
|
351
355
|
|
352
|
-
|
356
|
+
xOutputString = false
|
357
|
+
xOutput = if @format != "none"
|
353
358
|
## Act: Save script and send it to dot
|
354
359
|
t = Tempfile::open( File.basename($0) + "." )
|
355
360
|
t.print( xDOTScript )
|
@@ -367,6 +372,9 @@ class GraphViz
|
|
367
372
|
unless @format.nil?
|
368
373
|
if @filename.nil?
|
369
374
|
xOutputWithoutFile = "-T#{@format} "
|
375
|
+
elsif @filename == String
|
376
|
+
xOutputWithoutFile = "-T#{@format} "
|
377
|
+
xOutputString = true
|
370
378
|
else
|
371
379
|
xOutputWithFile = "-T#{@format} -o#{@filename} "
|
372
380
|
end
|
@@ -374,6 +382,9 @@ class GraphViz
|
|
374
382
|
@output.each do |format, file|
|
375
383
|
if file.nil?
|
376
384
|
xOutputWithoutFile << "-T#{format} "
|
385
|
+
elsif file == String
|
386
|
+
xOutputWithoutFile << "-T#{format} "
|
387
|
+
xOutputString = true
|
377
388
|
else
|
378
389
|
xOutputWithFile << "-T#{format} -o#{file} "
|
379
390
|
end
|
@@ -381,11 +392,26 @@ class GraphViz
|
|
381
392
|
|
382
393
|
xCmd = "#{cmd} #{xOutputWithFile} #{xOutputWithoutFile} #{t.path}"
|
383
394
|
|
384
|
-
f = IO.popen( xCmd )
|
385
|
-
print f.readlines
|
386
|
-
f.close
|
395
|
+
#f = IO.popen( xCmd )
|
396
|
+
#print f.readlines
|
397
|
+
#f.close
|
398
|
+
Open3.popen3( xCmd ) do |_, stdout, stderr|
|
399
|
+
errors = stderr.read
|
400
|
+
if errors.blank?
|
401
|
+
stdout.read
|
402
|
+
else
|
403
|
+
raise "Error from graphviz (#{xCmd}):\n#{errors}"
|
404
|
+
end
|
405
|
+
end
|
406
|
+
else
|
407
|
+
#puts xDOTScript
|
408
|
+
xDOTScript
|
409
|
+
end
|
410
|
+
|
411
|
+
if xOutputString
|
412
|
+
xOutput
|
387
413
|
else
|
388
|
-
|
414
|
+
print xOutput
|
389
415
|
end
|
390
416
|
end
|
391
417
|
end
|
@@ -563,6 +589,17 @@ class GraphViz
|
|
563
589
|
yield( self ) if( block )
|
564
590
|
end
|
565
591
|
|
592
|
+
#
|
593
|
+
# Escape a string to be acceptable as a node name in a graphviz input file
|
594
|
+
#
|
595
|
+
def self.escape(str) #:nodoc:
|
596
|
+
if str.match( /^[a-zA-Z_]+[a-zA-Z0-9_:\.]*$/ ).nil?
|
597
|
+
'"' + str.gsub('"', '\\"').gsub("\n", '\\\\n') + '"'
|
598
|
+
else
|
599
|
+
str
|
600
|
+
end
|
601
|
+
end
|
602
|
+
|
566
603
|
def find_executable( ) #:nodoc:
|
567
604
|
cmd = find_executable0( @prog )
|
568
605
|
if cmd == nil and @path != nil
|
data/lib/graphviz/constants.rb
CHANGED
data/lib/graphviz/edge.rb
CHANGED
@@ -100,11 +100,13 @@ class GraphViz
|
|
100
100
|
xLink = " -- "
|
101
101
|
end
|
102
102
|
|
103
|
-
xNodeNameOne = @xNodeOne.clone
|
104
|
-
xNodeNameOne = '"' << xNodeNameOne << '"' if xNodeNameOne.match( /^[a-zA-Z_]+[a-zA-Z0-9_\.]*$/ ).nil?
|
103
|
+
#xNodeNameOne = @xNodeOne.clone
|
104
|
+
#xNodeNameOne = '"' << xNodeNameOne << '"' if xNodeNameOne.match( /^[a-zA-Z_]+[a-zA-Z0-9_\.]*$/ ).nil?
|
105
|
+
xNodeNameOne = GraphViz.escape(@xNodeOne)
|
105
106
|
|
106
|
-
xNodeNameTwo = @xNodeTwo.clone
|
107
|
-
xNodeNameTwo = '"' << xNodeNameTwo << '"' if xNodeNameTwo.match( /^[a-zA-Z_]+[a-zA-Z0-9_\.]*$/ ).nil?
|
107
|
+
#xNodeNameTwo = @xNodeTwo.clone
|
108
|
+
#xNodeNameTwo = '"' << xNodeNameTwo << '"' if xNodeNameTwo.match( /^[a-zA-Z_]+[a-zA-Z0-9_\.]*$/ ).nil?
|
109
|
+
xNodeNameTwo = GraphViz.escape(@xNodeTwo)
|
108
110
|
|
109
111
|
xOut = xNodeNameOne + xLink + xNodeNameTwo
|
110
112
|
xAttr = ""
|
data/lib/graphviz/node.rb
CHANGED
@@ -100,8 +100,9 @@ class GraphViz
|
|
100
100
|
end
|
101
101
|
|
102
102
|
def output #:nodoc:
|
103
|
-
xNodeName = @xNodeName.clone
|
104
|
-
xNodeName = '"' << xNodeName << '"' if xNodeName.match( /^[a-zA-Z_]+[a-zA-Z0-9_\.]*$/ ).nil?
|
103
|
+
#xNodeName = @xNodeName.clone
|
104
|
+
#xNodeName = '"' << xNodeName << '"' if xNodeName.match( /^[a-zA-Z_]+[a-zA-Z0-9_\.]*$/ ).nil?
|
105
|
+
xNodeName = GraphViz.escape(@xNodeName)
|
105
106
|
|
106
107
|
xOut = "" << xNodeName
|
107
108
|
xAttr = ""
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-graphviz
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gregoire Lejeune
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-10-
|
12
|
+
date: 2009-10-15 00:00:00 +02:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -83,6 +83,7 @@ files:
|
|
83
83
|
- examples/sample20.rb
|
84
84
|
- examples/sample21.rb
|
85
85
|
- examples/sample22.rb
|
86
|
+
- examples/sample23.rb
|
86
87
|
- examples/shapes.rb
|
87
88
|
- examples/test.xml
|
88
89
|
- examples/testorder.rb
|
@@ -99,7 +100,10 @@ has_rdoc: true
|
|
99
100
|
homepage: http://raa.ruby-lang.org/project/ruby-graphviz/
|
100
101
|
licenses: []
|
101
102
|
|
102
|
-
post_install_message:
|
103
|
+
post_install_message: |+
|
104
|
+
Since version 0.9.2, Ruby/GraphViz use Open3.popen3.
|
105
|
+
On Windows, you need to install win32-open3
|
106
|
+
|
103
107
|
rdoc_options:
|
104
108
|
- --title
|
105
109
|
- Ruby/GraphViz
|