ruby-graphviz 0.9.11 → 0.9.12

Sign up to get free protection for your applications and to get access to all the features.
Files changed (81) hide show
  1. data/AUTHORS +1 -0
  2. data/README.rdoc +49 -7
  3. data/bin/ruby2gv +2 -2
  4. data/examples/sample07.rb +2 -2
  5. data/examples/sample08.rb +7 -7
  6. data/examples/sample30.rb +1 -1
  7. data/examples/sample39.rb +11 -0
  8. data/examples/sample40.rb +13 -42
  9. data/examples/sample41.rb +8 -0
  10. data/examples/{p2p.rb → sample42.rb} +1 -1
  11. data/examples/{HTML-Labels.rb → sample43.rb} +2 -2
  12. data/examples/{arrowhead.rb → sample44.rb} +0 -0
  13. data/examples/{shapes.rb → sample45.rb} +1 -1
  14. data/examples/{testorder.rb → sample46.rb} +0 -0
  15. data/examples/{testxml.rb → sample47.rb} +1 -1
  16. data/examples/{graphviz.org/cluster.rb → sample48.rb} +1 -1
  17. data/examples/{graphviz.org/hello_world.rb → sample49.rb} +1 -1
  18. data/examples/{graphviz.org/lion_share.rb → sample50.rb} +1 -1
  19. data/examples/{graphviz.org/process.rb → sample51.rb} +1 -1
  20. data/examples/{graphviz.org/TrafficLights.rb → sample52.rb} +1 -1
  21. data/examples/sample53.rb +26 -0
  22. data/examples/sample54.rb +26 -0
  23. data/examples/sample99.rb +70 -0
  24. data/lib/graphviz.rb +31 -8
  25. data/lib/graphviz/attrs.rb +1 -1
  26. data/lib/graphviz/constants.rb +2 -2
  27. data/lib/graphviz/edge.rb +44 -20
  28. data/lib/graphviz/family_tree.rb +56 -5
  29. data/lib/graphviz/family_tree/couple.rb +16 -6
  30. data/lib/graphviz/family_tree/generation.rb +19 -5
  31. data/lib/graphviz/family_tree/person.rb +39 -13
  32. data/lib/graphviz/family_tree/sibling.rb +13 -0
  33. data/lib/graphviz/node.rb +11 -3
  34. data/lib/graphviz/nothugly.rb +42 -0
  35. data/lib/graphviz/nothugly/nothugly.xsl +321 -0
  36. data/lib/graphviz/parser.rb +1 -1
  37. data/lib/graphviz/xml.rb +1 -1
  38. data/test/test_examples.rb +4 -0
  39. metadata +44 -58
  40. data/examples/maketest.bat +0 -109
  41. data/examples/maketest.sh +0 -109
  42. data/examples/sample30.rb.ps +0 -923
  43. data/examples/sample37.rb.dot +0 -50
  44. data/examples/sample37.rb.png +0 -0
  45. data/test/output/sample01.rb.png +0 -0
  46. data/test/output/sample02.rb.png +0 -0
  47. data/test/output/sample03.rb.png +0 -0
  48. data/test/output/sample04.rb.png +0 -0
  49. data/test/output/sample05.rb.png +0 -0
  50. data/test/output/sample06.rb.png +0 -0
  51. data/test/output/sample07.rb.png +0 -0
  52. data/test/output/sample08.rb.png +0 -0
  53. data/test/output/sample09.rb.png +0 -0
  54. data/test/output/sample10.rb.png +0 -0
  55. data/test/output/sample11.rb.png +0 -0
  56. data/test/output/sample12.rb.png +0 -0
  57. data/test/output/sample13.rb.png +0 -0
  58. data/test/output/sample14.rb.png +0 -0
  59. data/test/output/sample15.rb.png +0 -0
  60. data/test/output/sample16.rb.png +0 -0
  61. data/test/output/sample17.rb.png +0 -0
  62. data/test/output/sample18.rb.png +0 -0
  63. data/test/output/sample19.rb.png +0 -0
  64. data/test/output/sample20.rb.png +0 -0
  65. data/test/output/sample21.rb.html +0 -3
  66. data/test/output/sample21.rb.png +0 -0
  67. data/test/output/sample22.rb.html +0 -5
  68. data/test/output/sample22.rb.png +0 -0
  69. data/test/output/sample23.rb.png +0 -0
  70. data/test/output/sample24.rb.png +0 -0
  71. data/test/output/sample25.rb.png +0 -0
  72. data/test/output/sample26.rb.png +0 -0
  73. data/test/output/sample28.rb.png +0 -0
  74. data/test/output/sample29.rb.svg +0 -21
  75. data/test/output/sample30.rb.ps +0 -268
  76. data/test/output/sample31.rb.png +0 -0
  77. data/test/output/sample32.rb.png +0 -0
  78. data/test/output/sample37.rb.dot +0 -50
  79. data/test/output/sample37.rb.png +0 -0
  80. data/test/output/sample38.rb.png +0 -0
  81. data/test/output/sample40.rb.png +0 -0
@@ -0,0 +1,42 @@
1
+ # This file use notugly.xsl: An XSL transform to pretty up the SVG output from Graphviz
2
+ #
3
+ # See: http://www.hokstad.com/making-graphviz-output-pretty-with-xsl.html
4
+ # And: http://www.hokstad.com/making-graphviz-output-pretty-with-xsl-updated.html
5
+ #
6
+ # By Vidar Hokstad and Ryan Shea; Contributions by Jonas Tingborn,
7
+ # Earl Cummings, Michael Kennedy (Graphviz 2.20.2 compatibility, bug fixes,
8
+ # testing, lots of gradients)
9
+
10
+ require 'rubygems'
11
+ require 'xml/xslt'
12
+
13
+ class GraphViz
14
+ # Transform to pretty up the SVG output
15
+ #
16
+ # For more information, see http://www.hokstad.com/making-graphviz-output-pretty-with-xsl.html
17
+ # and http://www.hokstad.com/making-graphviz-output-pretty-with-xsl-updated.html
18
+ #
19
+ # You can use the :nothugly option to GraphViz#output :
20
+ #
21
+ # graph.output( :svg => "myGraph.svg", :nothugly => true )
22
+ #
23
+ # Or directly on an SVG output graph :
24
+ #
25
+ # GraphViz.nothugly( "myGraph.svg" )
26
+ def self.nothugly( file, save = true )
27
+ xslt = XML::XSLT.new()
28
+ xslt.xml = file
29
+ xslt.xsl = File.join( File.dirname(File.expand_path(__FILE__)), "nothugly", "nothugly.xsl" )
30
+
31
+ out = xslt.serve()
32
+
33
+ if save
34
+ fname = File.join( File.dirname(File.expand_path(file)), File.basename(file))
35
+ File.open( fname, "w" ) { |io|
36
+ io.print out
37
+ }
38
+ else
39
+ return out
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,321 @@
1
+ <?xml version="1.0" ?>
2
+ <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
3
+ xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg">
4
+ <xsl:output method="xml" indent="yes"
5
+ doctype-public="-//W3C//DTD SVG 1.0//EN"
6
+ doctype-system="http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"/>
7
+
8
+ <xsl:template match="@*|node()">
9
+ <xsl:copy>
10
+ <xsl:apply-templates select="@*|node()"/>
11
+ </xsl:copy>
12
+ </xsl:template>
13
+
14
+ <xsl:template match="svg:svg">
15
+ <svg xmlns="http://www.w3.org/2000/svg">
16
+ <!-- Order is important here, so the attributes below overrides the
17
+ originals, which are copied "wholesale" -->
18
+ <xsl:apply-templates select="@*" />
19
+
20
+ <defs>
21
+ <linearGradient id="white" x1="0%" y1="0%" x2="0%" y2="0%">
22
+ <stop offset="0%" style="stop-color:rgb(255,255,255);stop-opacity:1"/>
23
+ </linearGradient>
24
+
25
+ <linearGradient id="aquamarine" x1="0%" y1="0%" x2="100%" y2="100%">
26
+ <stop offset="0%" style="stop-color:rgb(255,255,255);stop-opacity:1"/>
27
+ <stop offset="100%" style="stop-color:rgb(127,255,212);stop-opacity:1"/>
28
+ </linearGradient>
29
+
30
+ <linearGradient id="azure" x1="0%" y1="0%" x2="100%" y2="100%">
31
+ <stop offset="0%" style="stop-color:rgb(255,255,255);stop-opacity:1"/>
32
+ <stop offset="100%" style="stop-color:rgb(240,255,255);stop-opacity:1"/>
33
+ </linearGradient>
34
+
35
+ <linearGradient id="blue" x1="0%" y1="0%" x2="100%" y2="100%">
36
+ <stop offset="0%" style="stop-color:rgb(255,255,255);stop-opacity:1"/>
37
+ <stop offset="100%" style="stop-color:rgb(0,0,255);stop-opacity:1"/>
38
+ </linearGradient>
39
+
40
+ <linearGradient id="blueviolet" x1="0%" y1="0%" x2="100%" y2="100%">
41
+ <stop offset="0%" style="stop-color:rgb(255,255,255);stop-opacity:1"/>
42
+ <stop offset="100%" style="stop-color:rgb(138,43,226);stop-opacity:1"/>
43
+ </linearGradient>
44
+
45
+ <linearGradient id="brown" x1="0%" y1="0%" x2="100%" y2="100%">
46
+ <stop offset="0%" style="stop-color:rgb(255,255,255);stop-opacity:1"/>
47
+ <stop offset="100%" style="stop-color:rgb(165,42,42);stop-opacity:1"/>
48
+ </linearGradient>
49
+
50
+ <linearGradient id="cadetblue" x1="0%" y1="0%" x2="100%" y2="100%">
51
+ <stop offset="0%" style="stop-color:rgb(255,255,255);stop-opacity:1"/>
52
+ <stop offset="100%" style="stop-color:rgb(95,158,160);stop-opacity:1"/>
53
+ </linearGradient>
54
+
55
+ <linearGradient id="chocolate" x1="0%" y1="0%" x2="100%" y2="100%">
56
+ <stop offset="0%" style="stop-color:rgb(255,255,255);stop-opacity:1"/>
57
+ <stop offset="100%" style="stop-color:rgb(210,105,30);stop-opacity:1"/>
58
+ </linearGradient>
59
+
60
+ <linearGradient id="cornflowerblue" x1="0%" y1="0%" x2="100%" y2="100%">
61
+ <stop offset="0%" style="stop-color:rgb(255,255,255);stop-opacity:1"/>
62
+ <stop offset="100%" style="stop-color:rgb(100,149,237);stop-opacity:1"/>
63
+ </linearGradient>
64
+
65
+ <linearGradient id="crimson" x1="0%" y1="0%" x2="100%" y2="100%">
66
+ <stop offset="0%" style="stop-color:rgb(255,255,255);stop-opacity:1"/>
67
+ <stop offset="100%" style="stop-color:rgb(220,20,60);stop-opacity:1"/>
68
+ </linearGradient>
69
+
70
+ <linearGradient id="cyan" x1="0%" y1="0%" x2="100%" y2="100%">
71
+ <stop offset="0%" style="stop-color:rgb(255,255,255);stop-opacity:1"/>
72
+ <stop offset="100%" style="stop-color:rgb(0,255,255);stop-opacity:1"/>
73
+ </linearGradient>
74
+
75
+ <linearGradient id="darkgreen" x1="0%" y1="0%" x2="100%" y2="100%">
76
+ <stop offset="0%" style="stop-color:rgb(255,255,255);stop-opacity:1"/>
77
+ <stop offset="100%" style="stop-color:rgb(0,100,0);stop-opacity:1"/>
78
+ </linearGradient>
79
+
80
+ <linearGradient id="darkorange" x1="0%" y1="0%" x2="100%" y2="100%">
81
+ <stop offset="0%" style="stop-color:rgb(255,255,255);stop-opacity:1"/>
82
+ <stop offset="100%" style="stop-color:rgb(255,140,0);stop-opacity:1"/>
83
+ </linearGradient>
84
+
85
+ <linearGradient id="gold" x1="0%" y1="0%" x2="100%" y2="100%">
86
+ <stop offset="0%" style="stop-color:rgb(255,255,255);stop-opacity:1"/>
87
+ <stop offset="100%" style="stop-color:rgb(255,215,0);stop-opacity:1"/>
88
+ </linearGradient>
89
+
90
+ <linearGradient id="gray" x1="0%" y1="0%" x2="100%" y2="100%">
91
+ <stop offset="0%" style="stop-color:rgb(255,255,255);stop-opacity:1"/>
92
+ <stop offset="100%" style="stop-color:rgb(192,192,192);stop-opacity:1"/>
93
+ </linearGradient>
94
+
95
+ <linearGradient id="greenyellow" x1="0%" y1="0%" x2="100%" y2="100%">
96
+ <stop offset="0%" style="stop-color:rgb(255,255,255);stop-opacity:1"/>
97
+ <stop offset="100%" style="stop-color:rgb(173,255,47);stop-opacity:1"/>
98
+ </linearGradient>
99
+
100
+ <linearGradient id="green" x1="0%" y1="0%" x2="100%" y2="100%">
101
+ <stop offset="0%" style="stop-color:rgb(255,255,255);stop-opacity:1"/>
102
+ <stop offset="100%" style="stop-color:rgb(0,255,0);stop-opacity:1"/>
103
+ </linearGradient>
104
+
105
+ <linearGradient id="grey" x1="0%" y1="0%" x2="100%" y2="100%">
106
+ <stop offset="0%" style="stop-color:rgb(255,255,255);stop-opacity:1"/>
107
+ <stop offset="100%" style="stop-color:rgb(192,192,192);stop-opacity:1"/>
108
+ </linearGradient>
109
+
110
+ <linearGradient id="hotpink" x1="0%" y1="0%" x2="100%" y2="100%">
111
+ <stop offset="0%" style="stop-color:rgb(255,255,255);stop-opacity:1"/>
112
+ <stop offset="100%" style="stop-color:rgb(255,105,180);stop-opacity:1"/>
113
+ </linearGradient>
114
+
115
+ <linearGradient id="indianred" x1="0%" y1="0%" x2="100%" y2="100%">
116
+ <stop offset="0%" style="stop-color:rgb(255,255,255);stop-opacity:1"/>
117
+ <stop offset="100%" style="stop-color:rgb(205,92,92);stop-opacity:1"/>
118
+ </linearGradient>
119
+
120
+ <linearGradient id="indigo" x1="0%" y1="0%" x2="100%" y2="100%">
121
+ <stop offset="0%" style="stop-color:rgb(255,255,255);stop-opacity:1"/>
122
+ <stop offset="100%" style="stop-color:rgb(75,0,130);stop-opacity:1"/>
123
+ </linearGradient>
124
+
125
+ <linearGradient id="lavender" x1="0%" y1="0%" x2="100%" y2="100%">
126
+ <stop offset="0%" style="stop-color:rgb(255,255,255);stop-opacity:1"/>
127
+ <stop offset="100%" style="stop-color:rgb(230,230,250);stop-opacity:1"/>
128
+ </linearGradient>
129
+
130
+ <linearGradient id="lightblue" x1="0%" y1="0%" x2="100%" y2="100%">
131
+ <stop offset="0%" style="stop-color:rgb(255,255,255);stop-opacity:1"/>
132
+ <stop offset="100%" style="stop-color:rgb(173,216,230);stop-opacity:1"/>
133
+ </linearGradient>
134
+
135
+ <linearGradient id="lightgray" x1="0%" y1="0%" x2="100%" y2="100%">
136
+ <stop offset="0%" style="stop-color:rgb(255,255,255);stop-opacity:1"/>
137
+ <stop offset="100%" style="stop-color:rgb(211,211,211);stop-opacity:1"/>
138
+ </linearGradient>
139
+
140
+ <linearGradient id="lightgrey" x1="0%" y1="0%" x2="100%" y2="100%">
141
+ <stop offset="0%" style="stop-color:rgb(255,255,255);stop-opacity:1"/>
142
+ <stop offset="100%" style="stop-color:rgb(211,211,211);stop-opacity:1"/>
143
+ </linearGradient>
144
+
145
+ <linearGradient id="magenta" x1="0%" y1="0%" x2="100%" y2="100%">
146
+ <stop offset="0%" style="stop-color:rgb(255,255,255);stop-opacity:1"/>
147
+ <stop offset="100%" style="stop-color:rgb(255,0,255);stop-opacity:1"/>
148
+ </linearGradient>
149
+
150
+ <linearGradient id="maroon" x1="0%" y1="0%" x2="100%" y2="100%">
151
+ <stop offset="0%" style="stop-color:rgb(255,255,255);stop-opacity:1"/>
152
+ <stop offset="100%" style="stop-color:rgb(176,48,96);stop-opacity:1"/>
153
+ </linearGradient>
154
+
155
+ <linearGradient id="mediumblue" x1="0%" y1="0%" x2="100%" y2="100%">
156
+ <stop offset="0%" style="stop-color:rgb(255,255,255);stop-opacity:1"/>
157
+ <stop offset="100%" style="stop-color:rgb(0,0,205);stop-opacity:1"/>
158
+ </linearGradient>
159
+
160
+ <linearGradient id="mediumpurple" x1="0%" y1="0%" x2="100%" y2="100%">
161
+ <stop offset="0%" style="stop-color:rgb(255,255,255);stop-opacity:1"/>
162
+ <stop offset="100%" style="stop-color:rgb(147,112,219);stop-opacity:1"/>
163
+ </linearGradient>
164
+
165
+ <linearGradient id="orange" x1="0%" y1="0%" x2="100%" y2="100%">
166
+ <stop offset="0%" style="stop-color:rgb(255,255,255);stop-opacity:1"/>
167
+ <stop offset="100%" style="stop-color:rgb(255,165,0);stop-opacity:1"/>
168
+ </linearGradient>
169
+
170
+ <linearGradient id="pink" x1="0%" y1="0%" x2="100%" y2="100%">
171
+ <stop offset="0%" style="stop-color:rgb(255,255,255);stop-opacity:1"/>
172
+ <stop offset="100%" style="stop-color:rgb(255,192,203);stop-opacity:1"/>
173
+ </linearGradient>
174
+
175
+ <linearGradient id="purple" x1="0%" y1="0%" x2="100%" y2="100%">
176
+ <stop offset="0%" style="stop-color:rgb(255,255,255);stop-opacity:1"/>
177
+ <stop offset="100%" style="stop-color:rgb(160,32,240);stop-opacity:1"/>
178
+ </linearGradient>
179
+
180
+ <linearGradient id="red" x1="0%" y1="0%" x2="100%" y2="100%">
181
+ <stop offset="0%" style="stop-color:rgb(255,255,255);stop-opacity:1"/>
182
+ <stop offset="100%" style="stop-color:rgb(255,0,0);stop-opacity:1"/>
183
+ </linearGradient>
184
+
185
+ <linearGradient id="steelblue" x1="0%" y1="0%" x2="100%" y2="100%">
186
+ <stop offset="0%" style="stop-color:rgb(255,255,255);stop-opacity:1"/>
187
+ <stop offset="100%" style="stop-color:rgb(70,130,180);stop-opacity:1"/>
188
+ </linearGradient>
189
+
190
+ <linearGradient id="violet" x1="0%" y1="0%" x2="100%" y2="100%">
191
+ <stop offset="0%" style="stop-color:rgb(255,255,255);stop-opacity:1"/>
192
+ <stop offset="100%" style="stop-color:rgb(238,130,238);stop-opacity:1"/>
193
+ </linearGradient>
194
+
195
+ <linearGradient id="yellow" x1="0%" y1="0%" x2="100%" y2="100%">
196
+ <stop offset="0%" style="stop-color:rgb(255,255,255);stop-opacity:1"/>
197
+ <stop offset="100%" style="stop-color:rgb(255,255,0);stop-opacity:1"/>
198
+ </linearGradient>
199
+
200
+ <linearGradient id="none" x1="0%" y1="0%" x2="100%" y2="100%">
201
+ <stop offset="0%" style="stop-color:rgb(255,255,255);stop-opacity:1"/>
202
+ <stop offset="100%" style="stop-color:rgb(255,255,255);stop-opacity:1"/>
203
+ </linearGradient>
204
+ </defs>
205
+
206
+ <xsl:apply-templates />
207
+ </svg>
208
+ </xsl:template>
209
+
210
+ <!-- Match the top most "g" -->
211
+ <xsl:template match="/svg:svg/svg:g">
212
+ <g>
213
+ <xsl:apply-templates select="@*"/>
214
+ <!-- Graphviz uses a polygon as the background. Don't want a gradient there -->
215
+ <xsl:for-each select="svg:polygon">
216
+ <xsl:copy><xsl:apply-templates select="@*" /></xsl:copy>
217
+ </xsl:for-each>
218
+ <xsl:apply-templates select="svg:title|svg:g" />
219
+ </g>
220
+ </xsl:template>
221
+
222
+
223
+ <xsl:template match="svg:text">
224
+ <text>
225
+ <xsl:apply-templates select="@*" />
226
+ <xsl:attribute name="style">font-size:10px; font-family:Verdana</xsl:attribute>
227
+ <xsl:apply-templates select="text()"/>
228
+ </text>
229
+ </xsl:template>
230
+
231
+
232
+ <xsl:template match="svg:g">
233
+ <xsl:copy>
234
+ <xsl:apply-templates select="@*" />
235
+
236
+ <xsl:for-each select="svg:polygon|svg:ellipse">
237
+ <xsl:call-template name="poly-shadow" />
238
+ </xsl:for-each>
239
+
240
+ <xsl:choose>
241
+ <xsl:when test="@class='node'">
242
+ <xsl:for-each select="svg:path">
243
+ <xsl:call-template name="path-shadow" />
244
+ </xsl:for-each>
245
+ </xsl:when>
246
+ <xsl:otherwise>
247
+ <xsl:for-each select="svg:path">
248
+ <xsl:call-template name="path-shadow-edge" />
249
+ </xsl:for-each>
250
+ </xsl:otherwise>
251
+ </xsl:choose>
252
+
253
+ <xsl:for-each select="svg:polygon|svg:ellipse|svg:polyline">
254
+ <xsl:sort select="@ry" order="descending" />
255
+ <xsl:call-template name="poly-main" />
256
+ </xsl:for-each>
257
+
258
+ <xsl:choose>
259
+ <xsl:when test="@class='node'">
260
+ <xsl:for-each select="svg:path">
261
+ <xsl:call-template name="path-main" />
262
+ </xsl:for-each>
263
+ </xsl:when>
264
+ <xsl:otherwise>
265
+ <xsl:for-each select="svg:path">
266
+ <path><xsl:apply-templates select="@*" /></path>
267
+ </xsl:for-each>
268
+ </xsl:otherwise>
269
+ </xsl:choose>
270
+
271
+ <xsl:apply-templates select="svg:text" />
272
+ </xsl:copy>
273
+ </xsl:template>
274
+
275
+ <xsl:template name="poly-shadow">
276
+ <xsl:element name="{name()}">
277
+ <xsl:apply-templates select="@*"/>
278
+ <xsl:attribute name="style">fill: black; stroke: none; fill-opacity:0.3</xsl:attribute>
279
+ <xsl:attribute name="transform">translate(3,3)</xsl:attribute>
280
+ </xsl:element>
281
+ </xsl:template>
282
+
283
+ <xsl:template name="path-shadow">
284
+ <xsl:element name="{name()}">
285
+ <xsl:apply-templates select="@*"/>
286
+ <!-- For some reason this comes out twice, so the opacity is set to 0.15 instead of 0.3 -->
287
+ <xsl:attribute name="style">fill: black; stroke: none; fill-opacity:0.15</xsl:attribute>
288
+ <xsl:attribute name="transform">translate(3,3)</xsl:attribute>
289
+ </xsl:element>
290
+ </xsl:template>
291
+
292
+ <xsl:template name="path-shadow-edge">
293
+ <xsl:element name="{name()}">
294
+ <xsl:apply-templates select="@*"/>
295
+ <xsl:attribute name="style">fill: none; stroke: black; stroke-opacity:0.3</xsl:attribute>
296
+ <xsl:attribute name="transform">translate(3,3)</xsl:attribute>
297
+ </xsl:element>
298
+ </xsl:template>
299
+
300
+ <xsl:template name="poly-main">
301
+ <xsl:element name="{name()}">
302
+ <xsl:apply-templates select="@*" />
303
+ <xsl:choose>
304
+ <xsl:when test="@fill != ''">
305
+ <xsl:attribute name="style">fill:url(#<xsl:value-of select="@fill"/>);stroke:black;</xsl:attribute></xsl:when>
306
+ <xsl:otherwise><xsl:attribute name="style">fill:url(#<xsl:value-of select="normalize-space(substring-after(substring-before(@style,';'),'fill:'))"/>);stroke:<xsl:value-of select="normalize-space(substring-after(substring-after(@style,';'),'stroke:'))"/>;</xsl:attribute></xsl:otherwise>
307
+ </xsl:choose>
308
+ </xsl:element>
309
+ </xsl:template>
310
+
311
+ <xsl:template name="path-main">
312
+ <path>
313
+ <xsl:apply-templates select="@*" />
314
+ <!-- This is somewhat broken - the gradient is set based on the position/size of the element it is used with; as a result it doesn't line up properly with the main polygon -->
315
+ <xsl:attribute name="style">fill:url(#<xsl:value-of select="normalize-space(substring-after(substring-before(../svg:polygon/@style,';'),'fill:'))"/>);stroke:black;</xsl:attribute>
316
+ </path>
317
+ </xsl:template>
318
+
319
+ </xsl:stylesheet>
320
+
321
+
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2009 Gregoire Lejeune <gregoire.lejeune@free.fr>
1
+ # Copyright (C) 2009, 2010 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
data/lib/graphviz/xml.rb CHANGED
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Gregoire Lejeune <gregoire.lejeune@free.fr>
1
+ # Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 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
@@ -50,6 +50,10 @@ class GraphVizTest < Test::Unit::TestCase
50
50
  assert_output_pattern(/\Adigraph G \{.*\}\n\Z/m, '38')
51
51
  end
52
52
 
53
+ def test_sample40
54
+ assert_output_pattern(/\Adigraph G \{.*\}\n\Z/m, '40')
55
+ end
56
+
53
57
 
54
58
  #
55
59
  # for every sample file in the examples directory that matches the
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-graphviz
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 35
4
5
  prerelease: false
5
6
  segments:
6
7
  - 0
7
8
  - 9
8
- - 11
9
- version: 0.9.11
9
+ - 12
10
+ version: 0.9.12
10
11
  platform: ruby
11
12
  authors:
12
13
  - Gregoire Lejeune
@@ -14,16 +15,18 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2010-05-02 00:00:00 +02:00
18
+ date: 2010-06-28 00:00:00 +02:00
18
19
  default_executable:
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
21
22
  name: treetop
22
23
  prerelease: false
23
24
  requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
24
26
  requirements:
25
27
  - - ">="
26
28
  - !ruby/object:Gem::Version
29
+ hash: 3
27
30
  segments:
28
31
  - 0
29
32
  version: "0"
@@ -47,7 +50,6 @@ files:
47
50
  - setup.rb
48
51
  - bin/gem2gv
49
52
  - bin/ruby2gv
50
- - examples/arrowhead.rb
51
53
  - examples/dot/cluster.dot
52
54
  - examples/dot/dotgraph.dot
53
55
  - examples/dot/fsm.dot
@@ -63,16 +65,7 @@ files:
63
65
  - examples/dot/test.dot
64
66
  - examples/dot/test_parse.rb
65
67
  - examples/dot/unix.dot
66
- - examples/graphviz.org/cluster.rb
67
- - examples/graphviz.org/hello_world.rb
68
- - examples/graphviz.org/lion_share.rb
69
- - examples/graphviz.org/process.rb
70
- - examples/graphviz.org/TrafficLights.rb
71
68
  - examples/hello.png
72
- - examples/HTML-Labels.rb
73
- - examples/maketest.bat
74
- - examples/maketest.sh
75
- - examples/p2p.rb
76
69
  - examples/rgv/rgv.ps
77
70
  - examples/rgv/test_rgv.rb
78
71
  - examples/rgv/test_rgv.rb.ps
@@ -106,7 +99,6 @@ files:
106
99
  - examples/sample28.rb
107
100
  - examples/sample29.rb
108
101
  - examples/sample30.rb
109
- - examples/sample30.rb.ps
110
102
  - examples/sample31.rb
111
103
  - examples/sample32.rb
112
104
  - examples/sample33.rb
@@ -114,18 +106,29 @@ files:
114
106
  - examples/sample35.rb
115
107
  - examples/sample36.rb
116
108
  - examples/sample37.rb
117
- - examples/sample37.rb.dot
118
- - examples/sample37.rb.png
119
109
  - examples/sample38.rb
110
+ - examples/sample39.rb
120
111
  - examples/sample40.rb
112
+ - examples/sample41.rb
113
+ - examples/sample42.rb
114
+ - examples/sample43.rb
115
+ - examples/sample44.rb
116
+ - examples/sample45.rb
117
+ - examples/sample46.rb
118
+ - examples/sample47.rb
119
+ - examples/sample48.rb
120
+ - examples/sample49.rb
121
+ - examples/sample50.rb
122
+ - examples/sample51.rb
123
+ - examples/sample52.rb
124
+ - examples/sample53.rb
125
+ - examples/sample54.rb
126
+ - examples/sample99.rb
121
127
  - examples/sdlshapes/README
122
128
  - examples/sdlshapes/sdl.ps
123
129
  - examples/sdlshapes/sdlshapes.dot
124
- - examples/shapes.rb
125
130
  - examples/simpsons.gv
126
131
  - examples/test.xml
127
- - examples/testorder.rb
128
- - examples/testxml.rb
129
132
  - lib/graphviz/attrs.rb
130
133
  - lib/graphviz/constants.rb
131
134
  - lib/graphviz/core_ext.rb
@@ -134,51 +137,17 @@ files:
134
137
  - lib/graphviz/family_tree/couple.rb
135
138
  - lib/graphviz/family_tree/generation.rb
136
139
  - lib/graphviz/family_tree/person.rb
140
+ - lib/graphviz/family_tree/sibling.rb
137
141
  - lib/graphviz/family_tree.rb
138
142
  - lib/graphviz/node.rb
143
+ - lib/graphviz/nothugly/nothugly.xsl
144
+ - lib/graphviz/nothugly.rb
139
145
  - lib/graphviz/parser.rb
140
146
  - lib/graphviz/types/esc_string.rb
141
147
  - lib/graphviz/types/html_string.rb
142
148
  - lib/graphviz/types.rb
143
149
  - lib/graphviz/xml.rb
144
150
  - lib/graphviz.rb
145
- - test/output/sample01.rb.png
146
- - test/output/sample02.rb.png
147
- - test/output/sample03.rb.png
148
- - test/output/sample04.rb.png
149
- - test/output/sample05.rb.png
150
- - test/output/sample06.rb.png
151
- - test/output/sample07.rb.png
152
- - test/output/sample08.rb.png
153
- - test/output/sample09.rb.png
154
- - test/output/sample10.rb.png
155
- - test/output/sample11.rb.png
156
- - test/output/sample12.rb.png
157
- - test/output/sample13.rb.png
158
- - test/output/sample14.rb.png
159
- - test/output/sample15.rb.png
160
- - test/output/sample16.rb.png
161
- - test/output/sample17.rb.png
162
- - test/output/sample18.rb.png
163
- - test/output/sample19.rb.png
164
- - test/output/sample20.rb.png
165
- - test/output/sample21.rb.html
166
- - test/output/sample21.rb.png
167
- - test/output/sample22.rb.html
168
- - test/output/sample22.rb.png
169
- - test/output/sample23.rb.png
170
- - test/output/sample24.rb.png
171
- - test/output/sample25.rb.png
172
- - test/output/sample26.rb.png
173
- - test/output/sample28.rb.png
174
- - test/output/sample29.rb.svg
175
- - test/output/sample30.rb.ps
176
- - test/output/sample31.rb.png
177
- - test/output/sample32.rb.png
178
- - test/output/sample37.rb.dot
179
- - test/output/sample37.rb.png
180
- - test/output/sample38.rb.png
181
- - test/output/sample40.rb.png
182
151
  - test/support.rb
183
152
  - test/test_examples.rb
184
153
  - test/test_init.rb
@@ -186,13 +155,26 @@ has_rdoc: true
186
155
  homepage: http://raa.ruby-lang.org/project/ruby-graphviz/
187
156
  licenses: []
188
157
 
189
- post_install_message: |+
158
+ post_install_message: |
190
159
 
191
160
  Since version 0.9.2, Ruby/GraphViz can use Open3.popen3 (or not)
192
161
  On Windows, you can install 'win32-open3'
193
162
 
194
163
  You need to install GraphViz (http://graphviz.org/) to use this Gem.
195
164
 
165
+ For more information about Ruby-Graphviz :
166
+ * Doc : http://rdoc.info/projects/glejeune/Ruby-Graphviz
167
+ * Sources : http://github.com/glejeune/Ruby-Graphviz
168
+ * NEW - Mailing List : http://groups.google.com/group/ruby-graphviz
169
+
170
+ /!\ Version 0.9.12 introduce a new solution to connect edges to node ports
171
+ For more information, see http://github.com/glejeune/Ruby-Graphviz/issues/#issue/13
172
+ So if you use node ports, maybe you need to change your code.
173
+
174
+ /!\ GraphViz::Node#name is deprecated and will be removed in version 1.0.0
175
+
176
+ /!\ :output and :file options are deprecated and will be removed in version 1.0.0
177
+
196
178
  rdoc_options:
197
179
  - --title
198
180
  - Ruby/GraphViz
@@ -201,23 +183,27 @@ rdoc_options:
201
183
  require_paths:
202
184
  - lib
203
185
  required_ruby_version: !ruby/object:Gem::Requirement
186
+ none: false
204
187
  requirements:
205
188
  - - ">="
206
189
  - !ruby/object:Gem::Version
190
+ hash: 3
207
191
  segments:
208
192
  - 0
209
193
  version: "0"
210
194
  required_rubygems_version: !ruby/object:Gem::Requirement
195
+ none: false
211
196
  requirements:
212
197
  - - ">="
213
198
  - !ruby/object:Gem::Version
199
+ hash: 3
214
200
  segments:
215
201
  - 0
216
202
  version: "0"
217
203
  requirements: []
218
204
 
219
205
  rubyforge_project: ruby-asp
220
- rubygems_version: 1.3.6
206
+ rubygems_version: 1.3.7
221
207
  signing_key:
222
208
  specification_version: 3
223
209
  summary: Interface to the GraphViz graphing tool