ruby-graphviz 0.9.1 → 0.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|