graph 2.0.0 → 2.0.1
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/.gemtest +0 -0
- data/History.txt +12 -0
- data/README.txt +9 -0
- data/lib/graph.rb +49 -28
- data/lib/rake_analyzer.rb +3 -1
- data/test/test_graph.rb +1 -1
- data.tar.gz.sig +0 -0
- metadata +29 -10
- metadata.gz.sig +0 -0
data/.gemtest
ADDED
File without changes
|
data/History.txt
CHANGED
@@ -1,3 +1,15 @@
|
|
1
|
+
=== 2.0.1 / 2011-02-18
|
2
|
+
|
3
|
+
* 2 minor enhancements:
|
4
|
+
|
5
|
+
* Slightly improved output.
|
6
|
+
* Refactored Node and Edgue under Thingy.
|
7
|
+
|
8
|
+
* 2 bug fixes:
|
9
|
+
|
10
|
+
* Expanded out subcall to rake to include current load path
|
11
|
+
* Use the rake from the calling ruby process as the invoking process
|
12
|
+
|
1
13
|
=== 2.0.0 / 2010-12-24
|
2
14
|
|
3
15
|
* 1 major enhancement:
|
data/README.txt
CHANGED
@@ -12,6 +12,15 @@ rubygems, rake tasks, homebrew ports, mac ports, and freebsd ports,
|
|
12
12
|
coloring leaf nodes blue, outdated nodes red, and outdated leaf nodes
|
13
13
|
purple (red+blue).
|
14
14
|
|
15
|
+
OSX quick tip:
|
16
|
+
|
17
|
+
% sudo gem install graph
|
18
|
+
% sudo brew install graphviz
|
19
|
+
% gem unpack graph
|
20
|
+
% cd graph*
|
21
|
+
% rake gallery
|
22
|
+
% open gallery/*.png
|
23
|
+
|
15
24
|
== FEATURES/PROBLEMS:
|
16
25
|
|
17
26
|
* Very clean DSL interface and API.
|
data/lib/graph.rb
CHANGED
@@ -1,11 +1,13 @@
|
|
1
1
|
#!/usr/local/bin/ruby -w
|
2
2
|
|
3
|
+
require "enumerator"
|
4
|
+
|
3
5
|
##
|
4
6
|
# Graph models directed graphs and subgraphs and outputs in graphviz's
|
5
7
|
# dot format.
|
6
8
|
|
7
9
|
class Graph
|
8
|
-
VERSION = "2.0.
|
10
|
+
VERSION = "2.0.1" # :nodoc:
|
9
11
|
|
10
12
|
LIGHT_COLORS = %w(gray lightblue lightcyan lightgray lightpink
|
11
13
|
lightslategray lightsteelblue white)
|
@@ -228,7 +230,7 @@ class Graph
|
|
228
230
|
|
229
231
|
def save path, type = nil
|
230
232
|
File.open "#{path}.dot", "w" do |f|
|
231
|
-
f.
|
233
|
+
f.puts self.to_s
|
232
234
|
end
|
233
235
|
system "dot -T#{type} #{path}.dot > #{path}.#{type}" if type
|
234
236
|
end
|
@@ -282,7 +284,7 @@ class Graph
|
|
282
284
|
end
|
283
285
|
|
284
286
|
nodes.each do |name, node|
|
285
|
-
result << " #{node};" if graph or
|
287
|
+
result << " #{node};" if graph or node.attributes?
|
286
288
|
end
|
287
289
|
|
288
290
|
edges.each do |from, deps|
|
@@ -332,35 +334,58 @@ class Graph
|
|
332
334
|
end
|
333
335
|
end
|
334
336
|
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
##
|
341
|
-
# Create a new edge in +graph+ from +from+ to +to+.
|
337
|
+
class Thingy < Struct.new :graph, :attributes
|
338
|
+
def initialize graph
|
339
|
+
super graph, []
|
340
|
+
end
|
342
341
|
|
343
|
-
def
|
344
|
-
super
|
342
|
+
def initialize_copy other # :nodoc:
|
343
|
+
super
|
344
|
+
self.attributes = other.attributes.dup
|
345
345
|
end
|
346
346
|
|
347
347
|
##
|
348
|
-
# Shortcut method to set the label attribute
|
348
|
+
# Shortcut method to set the label attribute.
|
349
349
|
|
350
350
|
def label name
|
351
|
+
attributes.reject! { |s| s =~ /^label =/ }
|
351
352
|
attributes << "label = \"#{name}\""
|
352
353
|
self
|
353
354
|
end
|
354
355
|
|
356
|
+
##
|
357
|
+
# Does this thing have attributes?
|
358
|
+
|
359
|
+
def attributes?
|
360
|
+
not self.attributes.empty?
|
361
|
+
end
|
362
|
+
end
|
363
|
+
|
364
|
+
##
|
365
|
+
# An edge in a graph.
|
366
|
+
|
367
|
+
class Edge < Thingy
|
368
|
+
|
369
|
+
attr_accessor :from, :to
|
370
|
+
|
371
|
+
##
|
372
|
+
# Create a new edge in +graph+ from +from+ to +to+.
|
373
|
+
|
374
|
+
def initialize graph, from, to
|
375
|
+
super graph
|
376
|
+
self.from = from
|
377
|
+
self.to = to
|
378
|
+
end
|
379
|
+
|
355
380
|
##
|
356
381
|
# Returns the edge in dot syntax.
|
357
382
|
|
358
383
|
def to_s
|
359
384
|
fromto = "%p -> %p" % [from.name, to.name]
|
360
|
-
if attributes
|
361
|
-
fromto
|
362
|
-
else
|
385
|
+
if self.attributes? then
|
363
386
|
"%-20s [ %-20s ]" % [fromto, attributes.join(',')]
|
387
|
+
else
|
388
|
+
fromto
|
364
389
|
end
|
365
390
|
end
|
366
391
|
end
|
@@ -368,20 +393,16 @@ class Graph
|
|
368
393
|
##
|
369
394
|
# Nodes in the graph.
|
370
395
|
|
371
|
-
class Node <
|
396
|
+
class Node < Thingy
|
397
|
+
|
398
|
+
attr_accessor :name
|
372
399
|
|
373
400
|
##
|
374
401
|
# Create a new Node. Takes a parent graph and a name.
|
375
402
|
|
376
403
|
def initialize graph, name
|
377
|
-
super graph
|
378
|
-
|
379
|
-
|
380
|
-
##
|
381
|
-
# Shortcut method to set the node's label.
|
382
|
-
|
383
|
-
def label name
|
384
|
-
attributes << "label = #{name.inspect}"
|
404
|
+
super graph
|
405
|
+
self.name = name
|
385
406
|
end
|
386
407
|
|
387
408
|
##
|
@@ -406,10 +427,10 @@ class Graph
|
|
406
427
|
# Returns the node in dot syntax.
|
407
428
|
|
408
429
|
def to_s
|
409
|
-
if attributes
|
410
|
-
"#{name.inspect}"
|
411
|
-
else
|
430
|
+
if self.attributes? then
|
412
431
|
"%-20p [ %-20s ]" % [name, attributes.join(',')]
|
432
|
+
else
|
433
|
+
"#{name.inspect}"
|
413
434
|
end
|
414
435
|
end
|
415
436
|
end
|
data/lib/rake_analyzer.rb
CHANGED
@@ -7,7 +7,9 @@ class RakeAnalyzer < DepAnalyzer
|
|
7
7
|
boxes
|
8
8
|
|
9
9
|
current = nil
|
10
|
-
|
10
|
+
rake = Gem.bin_path('rake', 'rake') rescue 'rake'
|
11
|
+
|
12
|
+
`#{Gem.ruby} -I#{$:.join File::PATH_SEPARATOR} -S #{rake} -P -s`.each_line do |line|
|
11
13
|
case line
|
12
14
|
when /^rake (.+)/
|
13
15
|
name = $1
|
data/test/test_graph.rb
CHANGED
@@ -206,7 +206,7 @@ g_s = "subgraph subgraph
|
|
206
206
|
|
207
207
|
graph.save(path, type)
|
208
208
|
|
209
|
-
assert_equal graph.to_s, File.read("#{path}.dot")
|
209
|
+
assert_equal graph.to_s + "\n", File.read("#{path}.dot")
|
210
210
|
expected = ["dot -T#{type} #{path}.dot > #{path}.png"] if type
|
211
211
|
assert_equal expected, $x
|
212
212
|
ensure
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: graph
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
hash: 13
|
5
|
+
prerelease:
|
5
6
|
segments:
|
6
7
|
- 2
|
7
8
|
- 0
|
8
|
-
-
|
9
|
-
version: 2.0.
|
9
|
+
- 1
|
10
|
+
version: 2.0.1
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- Ryan Davis
|
@@ -35,35 +36,39 @@ cert_chain:
|
|
35
36
|
FBHgymkyj/AOSqKRIpXPhjC6
|
36
37
|
-----END CERTIFICATE-----
|
37
38
|
|
38
|
-
date:
|
39
|
+
date: 2011-02-18 00:00:00 -08:00
|
39
40
|
default_executable:
|
40
41
|
dependencies:
|
41
42
|
- !ruby/object:Gem::Dependency
|
42
43
|
name: minitest
|
43
44
|
prerelease: false
|
44
45
|
requirement: &id001 !ruby/object:Gem::Requirement
|
46
|
+
none: false
|
45
47
|
requirements:
|
46
48
|
- - ">="
|
47
49
|
- !ruby/object:Gem::Version
|
50
|
+
hash: 11
|
48
51
|
segments:
|
49
52
|
- 2
|
50
53
|
- 0
|
51
|
-
-
|
52
|
-
version: 2.0.
|
54
|
+
- 2
|
55
|
+
version: 2.0.2
|
53
56
|
type: :development
|
54
57
|
version_requirements: *id001
|
55
58
|
- !ruby/object:Gem::Dependency
|
56
59
|
name: hoe
|
57
60
|
prerelease: false
|
58
61
|
requirement: &id002 !ruby/object:Gem::Requirement
|
62
|
+
none: false
|
59
63
|
requirements:
|
60
64
|
- - ">="
|
61
65
|
- !ruby/object:Gem::Version
|
66
|
+
hash: 41
|
62
67
|
segments:
|
63
68
|
- 2
|
64
|
-
-
|
65
|
-
-
|
66
|
-
version: 2.
|
69
|
+
- 9
|
70
|
+
- 1
|
71
|
+
version: 2.9.1
|
67
72
|
type: :development
|
68
73
|
version_requirements: *id002
|
69
74
|
description: |-
|
@@ -74,6 +79,15 @@ description: |-
|
|
74
79
|
rubygems, rake tasks, homebrew ports, mac ports, and freebsd ports,
|
75
80
|
coloring leaf nodes blue, outdated nodes red, and outdated leaf nodes
|
76
81
|
purple (red+blue).
|
82
|
+
|
83
|
+
OSX quick tip:
|
84
|
+
|
85
|
+
% sudo gem install graph
|
86
|
+
% sudo brew install graphviz
|
87
|
+
% gem unpack graph
|
88
|
+
% cd graph*
|
89
|
+
% rake gallery
|
90
|
+
% open gallery/*.png
|
77
91
|
email:
|
78
92
|
- ryand-ruby@zenspider.com
|
79
93
|
executables:
|
@@ -106,6 +120,7 @@ files:
|
|
106
120
|
- lib/rubygems_analyzer.rb
|
107
121
|
- lib/rubygems_plugin.rb
|
108
122
|
- test/test_graph.rb
|
123
|
+
- .gemtest
|
109
124
|
has_rdoc: true
|
110
125
|
homepage: http://rubyforge.org/projects/seattlerb
|
111
126
|
licenses: []
|
@@ -117,23 +132,27 @@ rdoc_options:
|
|
117
132
|
require_paths:
|
118
133
|
- lib
|
119
134
|
required_ruby_version: !ruby/object:Gem::Requirement
|
135
|
+
none: false
|
120
136
|
requirements:
|
121
137
|
- - ">="
|
122
138
|
- !ruby/object:Gem::Version
|
139
|
+
hash: 3
|
123
140
|
segments:
|
124
141
|
- 0
|
125
142
|
version: "0"
|
126
143
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
144
|
+
none: false
|
127
145
|
requirements:
|
128
146
|
- - ">="
|
129
147
|
- !ruby/object:Gem::Version
|
148
|
+
hash: 3
|
130
149
|
segments:
|
131
150
|
- 0
|
132
151
|
version: "0"
|
133
152
|
requirements: []
|
134
153
|
|
135
154
|
rubyforge_project: seattlerb
|
136
|
-
rubygems_version: 1.
|
155
|
+
rubygems_version: 1.4.2
|
137
156
|
signing_key:
|
138
157
|
specification_version: 3
|
139
158
|
summary: Graph is a type of hash that outputs in graphviz's dot format
|
metadata.gz.sig
CHANGED
Binary file
|