depviz 0.4.0 → 0.5.3
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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/lib/depviz.rb +137 -63
- data.tar.gz.sig +0 -0
- metadata +43 -38
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0bea5e848933306a1774c6d5359f9129249c1c1eabae2e17a2272e25deba7014
|
4
|
+
data.tar.gz: e6a5bb5267bf93e7c38532538b4c98d3dbe437a3a17f6b1146ad682fae40f6af
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6682223bb805da84b4d4e639bdbb0cebce966a1f9b46f7b27395fa40aeab5e18536e5101aead00919a765aad58af19de6e060bf44091b1ca70ad266b943851eb
|
7
|
+
data.tar.gz: 6d2ae657451b3523ff329e3af5f653027da64d14d1924fa278576326e5af7abd0ff844ee56bc9775f81eb3edc845a957e4ede37bdae70c2767406a01d1dee5f3
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/lib/depviz.rb
CHANGED
@@ -8,41 +8,82 @@ require 'xml_to_sliml'
|
|
8
8
|
require 'dependency_builder'
|
9
9
|
|
10
10
|
|
11
|
-
|
12
|
-
|
11
|
+
module RegGem
|
12
|
+
|
13
|
+
def self.register()
|
14
|
+
'
|
15
|
+
hkey_gems
|
16
|
+
doctype
|
17
|
+
depviz
|
18
|
+
require depviz
|
19
|
+
class DepViz
|
20
|
+
media_type svg
|
21
|
+
'
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
class DepViz < PxGraphViz
|
26
|
+
using ColouredText
|
27
|
+
|
13
28
|
class Item
|
14
|
-
|
15
|
-
def initialize(s, root: nil, name:
|
29
|
+
|
30
|
+
def initialize(s, root: nil, name: nil, debug: false)
|
16
31
|
@s, @root, @name, @debug = s, root, name, debug
|
17
32
|
end
|
18
|
-
|
33
|
+
|
19
34
|
def dependencies()
|
20
|
-
|
35
|
+
|
21
36
|
if @debug then
|
22
37
|
puts 'inside DepViz::Item::dependencies'
|
23
38
|
puts '@s: ' + @s.inspect
|
24
39
|
puts '@root: ' + @root.inspect
|
25
40
|
end
|
26
|
-
|
41
|
+
|
27
42
|
a = LineTree.new(@s).to_doc.root.xpath('//' + @name)
|
28
43
|
puts 'dep: a: ' + a.inspect if @debug
|
29
|
-
|
44
|
+
|
45
|
+
enclose = ->(a) do
|
46
|
+
a.length > 1 ? [a.first] << enclose.call(a[1..-1]) : a
|
47
|
+
end
|
48
|
+
|
30
49
|
a2 = a.map do |x|
|
31
50
|
puts ' dependencies x: ' + x.inspect if @debug
|
32
|
-
x.backtrack.to_s.split('/')[1..-1]
|
51
|
+
enclose.call x.backtrack.to_s.split('/')[1..-1]
|
33
52
|
end
|
53
|
+
|
34
54
|
puts 'a2: ' + a2.inspect if @debug
|
35
|
-
|
36
|
-
|
37
|
-
|
55
|
+
|
56
|
+
# group the items in order to merge branches with the same parent
|
57
|
+
a3 = a2.group_by(&:first)
|
58
|
+
a4 = a3.map {|x| [x.first] + x.last.map(&:last)}
|
59
|
+
|
60
|
+
treeize = ->(obj, indent=-2) do
|
61
|
+
|
62
|
+
if obj.is_a? Array then
|
63
|
+
|
64
|
+
r = obj.map {|x| treeize.call(x, indent+1)}.join("\n")
|
65
|
+
puts 'r: ' + r.inspect if @debug
|
66
|
+
r
|
67
|
+
|
68
|
+
else
|
69
|
+
|
70
|
+
' ' * indent + obj
|
71
|
+
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
s = treeize.call(a4)
|
76
|
+
|
38
77
|
puts 'child s: ' + s.inspect if @debug
|
39
78
|
|
40
79
|
dv3 = DepViz.new()
|
41
80
|
dv3.read s
|
42
81
|
dv3
|
43
|
-
|
82
|
+
|
44
83
|
end
|
45
|
-
|
84
|
+
|
85
|
+
# returns a DepViz document
|
86
|
+
#
|
46
87
|
def reverse_dependencies()
|
47
88
|
|
48
89
|
a = LineTree.new(@s, root: @root).to_doc.root.xpath('//' + @name)
|
@@ -50,100 +91,133 @@ class DepViz
|
|
50
91
|
s = a.select {|x| x.has_elements? }\
|
51
92
|
.map{|x| XmlToSliml.new(x).to_s }.join("\n")
|
52
93
|
|
53
|
-
return if s.empty?
|
54
|
-
|
94
|
+
return DepViz.new if s.empty?
|
95
|
+
|
55
96
|
dv3 = DepViz.new(root: nil)
|
56
97
|
dv3.read s
|
57
98
|
dv3
|
58
|
-
|
59
|
-
end
|
60
|
-
|
61
|
-
end
|
62
99
|
|
63
|
-
|
64
|
-
|
100
|
+
end
|
101
|
+
|
102
|
+
end
|
103
|
+
|
104
|
+
def initialize(s='', fields: %w(label shape), delimiter: ' # ',
|
105
|
+
root: 'platform', style: nil,
|
106
|
+
debug: false, fill: '#ccffcc', stroke: '#999999',
|
107
|
+
text_color: '#330055')
|
108
|
+
|
65
109
|
@style, @root, @debug = style, root, debug
|
66
110
|
@header = "
|
67
111
|
<?polyrex schema='items[type]/item[label]' delimiter =' # '?>
|
68
112
|
type: digraph
|
69
113
|
|
70
114
|
"
|
71
|
-
|
72
|
-
|
73
|
-
|
115
|
+
if s.length > 0 then
|
116
|
+
|
117
|
+
if s =~ /<?depviz / then
|
118
|
+
|
119
|
+
raw_dv = s.clone
|
120
|
+
s2 = raw_dv.slice!(/<\?depviz [^>]+\?>/)
|
121
|
+
|
122
|
+
# attributes being sought => root fields delimiter id
|
123
|
+
attributes = Shellwords::shellwords(s).map {|x| key,
|
124
|
+
value = x.split(/=/, 2); [key.to_sym, value]}.to_h
|
125
|
+
|
126
|
+
h = {
|
127
|
+
fields: fields.join(', '),
|
128
|
+
delimiter: delimiter
|
129
|
+
}.merge attributes
|
130
|
+
|
131
|
+
s = if h[:root] then
|
132
|
+
"\n\n" + h[:root] + "\n" +
|
133
|
+
raw_dv.strip.lines.map {|line| ' ' + line}.join
|
134
|
+
else
|
135
|
+
raw_dv
|
136
|
+
end
|
137
|
+
|
138
|
+
delimiter = h[:delimiter]
|
139
|
+
fields = h[:fields].split(/ *, */)
|
140
|
+
|
141
|
+
end
|
142
|
+
|
143
|
+
@s = tree = DependencyBuilder.new(s).to_s
|
144
|
+
s3 = @root ? (@root + "\n" + tree.lines.map {|x| ' ' + x}.join) : tree
|
145
|
+
@pxg = super(@header + s3, style: @style)
|
146
|
+
|
147
|
+
end
|
148
|
+
|
74
149
|
|
75
150
|
end
|
76
|
-
|
151
|
+
|
152
|
+
def count()
|
153
|
+
return 0 unless @s
|
154
|
+
child_nodes.length
|
155
|
+
end
|
156
|
+
|
77
157
|
def item(name)
|
78
|
-
|
158
|
+
|
79
159
|
puts 'inside DepViz::item for ' + name.inspect if @debug
|
80
160
|
puts '_@s : ' + @s.inspect if @debug
|
81
161
|
Item.new @s, root: @root, name: name, debug: @debug
|
82
|
-
|
162
|
+
|
163
|
+
end
|
164
|
+
|
165
|
+
def nodes()
|
166
|
+
|
167
|
+
child_nodes.map {|x| x.name}.uniq
|
168
|
+
|
83
169
|
end
|
84
|
-
|
170
|
+
|
85
171
|
def read(s)
|
86
|
-
|
172
|
+
|
87
173
|
@s = s
|
88
174
|
s2 = @root ? @root + "\n" + s.lines.map {|x| ' ' + x}.join : s
|
89
175
|
@pxg = PxGraphViz.new(@header + s2, style: @style)
|
90
|
-
|
176
|
+
|
177
|
+
end
|
178
|
+
|
179
|
+
def to_doc()
|
180
|
+
Rexle.new(LineTree.new(@s, root: @root).to_xml).root.elements.first
|
91
181
|
end
|
92
182
|
|
93
183
|
def to_s()
|
94
184
|
@s
|
95
185
|
end
|
96
|
-
|
97
|
-
def to_svg()
|
98
|
-
@pxg.to_svg
|
99
|
-
end
|
100
186
|
|
101
187
|
def to_xml()
|
102
|
-
|
103
|
-
end
|
104
|
-
|
105
|
-
def build(s)
|
106
|
-
|
107
|
-
|
108
|
-
return if s.empty?
|
109
|
-
|
110
|
-
tree = DependencyBuilder.new(s).to_s
|
111
|
-
|
112
|
-
s3 = @root ? (@root + "\n" + tree.lines.map {|x| ' ' + x}.join) : tree
|
113
|
-
|
114
|
-
@pxg = PxGraphViz.new(@header + s3, style: @style)
|
115
|
-
|
116
|
-
tree
|
188
|
+
to_doc.xml
|
117
189
|
end
|
118
|
-
|
119
|
-
alias import build
|
120
190
|
|
121
191
|
private
|
122
192
|
|
193
|
+
def child_nodes()
|
194
|
+
to_doc.root.xpath('//*')
|
195
|
+
end
|
196
|
+
|
123
197
|
def default_stylesheet()
|
124
198
|
|
125
199
|
<<STYLE
|
126
|
-
node {
|
127
|
-
color: #ddaa66;
|
200
|
+
node {
|
201
|
+
color: #ddaa66;
|
128
202
|
fillcolor: #447722;
|
129
|
-
fontcolor: #ffeecc;
|
203
|
+
fontcolor: #ffeecc;
|
130
204
|
fontname: 'Trebuchet MS';
|
131
|
-
fontsize: 10;
|
205
|
+
fontsize: 10;
|
132
206
|
margin: 0.1;
|
133
|
-
penwidth: 1.3;
|
207
|
+
penwidth: 1.3;
|
134
208
|
style: filled;
|
135
209
|
}
|
136
|
-
|
210
|
+
|
137
211
|
a node {
|
138
|
-
color: #0011ee;
|
212
|
+
color: #0011ee;
|
139
213
|
}
|
140
214
|
|
141
215
|
edge {
|
142
216
|
arrowsize: 0.9;
|
143
|
-
color: #666;
|
144
|
-
fontcolor: #444444;
|
145
|
-
fontname: Verdana;
|
146
|
-
fontsize: 8;
|
217
|
+
color: #666;
|
218
|
+
fontcolor: #444444;
|
219
|
+
fontname: Verdana;
|
220
|
+
fontsize: 8;
|
147
221
|
dir: forward;
|
148
222
|
weight: 1;
|
149
223
|
}
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: depviz
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Robertson
|
@@ -10,27 +10,32 @@ bindir: bin
|
|
10
10
|
cert_chain:
|
11
11
|
- |
|
12
12
|
-----BEGIN CERTIFICATE-----
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
13
|
+
MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
|
14
|
+
YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjExMjA5MjAzNDIzWhcN
|
15
|
+
MjIxMjA5MjAzNDIzWjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
|
16
|
+
cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDfmSNE
|
17
|
+
ueVR4Rw/+iOZCBFm8C2VKKRPEpuJotEYC64fLdssnfOx8ItCMadp0ou9+q/RAzMB
|
18
|
+
OjNsrE9l2IS0n9YkOfeMLqhjLRfa9OhTl62n595gETOfI5bXyTmqiYz+mJG4QZrf
|
19
|
+
PzARfL2zF589xNqRyHzPdRLZxLLXPyRI795mqVmB0bYWibrSBb0rmKmVvpWd8SvA
|
20
|
+
t99RS9eGZE2fw06ngNk7/wUbvpwql8/p6EEXHDOZswfkCJw46qhPrAn1d0VM1i9K
|
21
|
+
kNabJbiRzh9WzL/qtqYck2hAdTxqsMN/jJBGJ18n4MLlZCbb6/+doy1N/PDR0C3u
|
22
|
+
XMK8Xsp5dX2+b3SP4mp9uw0RaE74zZ+anJdZ8JUCf3TBcBfX7Q2QJHqclb9OqVoq
|
23
|
+
TqxCsbZOgUuQc0eozOXC8Z518OBqJ+a5S+uyQl2Ecnqd2I20IzXF7q6a2XP2IyMM
|
24
|
+
S8Vui76C+WgXkRi95haT7955vQRJf4EY6Q7Jgf1CTABAYrjhVF/it6tEjJECAwEA
|
25
|
+
AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUKYwVgC2R
|
26
|
+
3zCOc27gpnSm5WkG/ucwJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
|
27
|
+
c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
|
28
|
+
BgkqhkiG9w0BAQsFAAOCAYEAS2Rq49RGwtcxjN9jto0LK5Pi/9F/T8fOaA6mS+Jm
|
29
|
+
TpIOGZppcqy/c9S7+duS0boopB0wy6WKgcrBFl7sMzvhY8HsC+1IvfK/OrEnGf5E
|
30
|
+
RKb+gj1LHMLNDDDjmR49hxr4HC5q0xdQjNROKecJK/9pd26FEzh83h91/y4eTDHB
|
31
|
+
R+CoV+XxQQZsaM7ob0/XXo6CLNVfexXZjaVmLb/hte8h2TsjB8ACyBE5aOPHlTqk
|
32
|
+
Q2N93GgIEx7mTTkmp0GbDx3+C5CCYTAaDzl37blfWJor24FhhKVZwSeIb0BEJDmZ
|
33
|
+
4FZeY1kID07JzDljwH+svLG4pYTOxSj0EVmiKKvVNKmHr4vDxovt/MJvRfEcTKic
|
34
|
+
zTKnpkkAKBz5bx1IPHZNy3lDcizHKyyM9NpqnhahDLay2bvPziCTFZ4TSUTY1+uT
|
35
|
+
OtP+/rSpQ79ezyeNwN9qKx23SWrNBvMkeNyMBMDdoNL+vA/sRwmiKuaWJuqIVaay
|
36
|
+
B7KTOXvQC2+5guaFLzsIiU9w
|
32
37
|
-----END CERTIFICATE-----
|
33
|
-
date:
|
38
|
+
date: 2021-12-09 00:00:00.000000000 Z
|
34
39
|
dependencies:
|
35
40
|
- !ruby/object:Gem::Dependency
|
36
41
|
name: pxgraphviz
|
@@ -38,60 +43,60 @@ dependencies:
|
|
38
43
|
requirements:
|
39
44
|
- - "~>"
|
40
45
|
- !ruby/object:Gem::Version
|
41
|
-
version: '0.
|
46
|
+
version: '0.5'
|
42
47
|
- - ">="
|
43
48
|
- !ruby/object:Gem::Version
|
44
|
-
version: 0.
|
49
|
+
version: 0.5.3
|
45
50
|
type: :runtime
|
46
51
|
prerelease: false
|
47
52
|
version_requirements: !ruby/object:Gem::Requirement
|
48
53
|
requirements:
|
49
54
|
- - "~>"
|
50
55
|
- !ruby/object:Gem::Version
|
51
|
-
version: '0.
|
56
|
+
version: '0.5'
|
52
57
|
- - ">="
|
53
58
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.
|
59
|
+
version: 0.5.3
|
55
60
|
- !ruby/object:Gem::Dependency
|
56
61
|
name: dependency_builder
|
57
62
|
requirement: !ruby/object:Gem::Requirement
|
58
63
|
requirements:
|
59
|
-
- - "~>"
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0.1'
|
62
64
|
- - ">="
|
63
65
|
- !ruby/object:Gem::Version
|
64
66
|
version: 0.1.0
|
67
|
+
- - "~>"
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0.1'
|
65
70
|
type: :runtime
|
66
71
|
prerelease: false
|
67
72
|
version_requirements: !ruby/object:Gem::Requirement
|
68
73
|
requirements:
|
69
|
-
- - "~>"
|
70
|
-
- !ruby/object:Gem::Version
|
71
|
-
version: '0.1'
|
72
74
|
- - ">="
|
73
75
|
- !ruby/object:Gem::Version
|
74
76
|
version: 0.1.0
|
77
|
+
- - "~>"
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: '0.1'
|
75
80
|
- !ruby/object:Gem::Dependency
|
76
81
|
name: xml_to_sliml
|
77
82
|
requirement: !ruby/object:Gem::Requirement
|
78
83
|
requirements:
|
79
|
-
- - "~>"
|
80
|
-
- !ruby/object:Gem::Version
|
81
|
-
version: '0.1'
|
82
84
|
- - ">="
|
83
85
|
- !ruby/object:Gem::Version
|
84
86
|
version: 0.1.0
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0.1'
|
85
90
|
type: :runtime
|
86
91
|
prerelease: false
|
87
92
|
version_requirements: !ruby/object:Gem::Requirement
|
88
93
|
requirements:
|
89
|
-
- - "~>"
|
90
|
-
- !ruby/object:Gem::Version
|
91
|
-
version: '0.1'
|
92
94
|
- - ">="
|
93
95
|
- !ruby/object:Gem::Version
|
94
96
|
version: 0.1.0
|
97
|
+
- - "~>"
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: '0.1'
|
95
100
|
description:
|
96
101
|
email: james@jamesrobertson.eu
|
97
102
|
executables: []
|
@@ -119,7 +124,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
119
124
|
version: '0'
|
120
125
|
requirements: []
|
121
126
|
rubyforge_project:
|
122
|
-
rubygems_version: 2.7.
|
127
|
+
rubygems_version: 2.7.10
|
123
128
|
signing_key:
|
124
129
|
specification_version: 4
|
125
130
|
summary: Generates a complete dependency tree from disparate dependencies to an SVG
|
metadata.gz.sig
CHANGED
Binary file
|