pxgraphviz 0.5.1 → 0.6.0
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/pxgraphviz.rb +119 -47
- data.tar.gz.sig +0 -0
- metadata +34 -34
- 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: 8ec769baa44cc90b7da7bb62a0856f87da40246ffaa5096051e58eed34d783b1
|
4
|
+
data.tar.gz: d471f35e76cc4993a38405c5dba1e162401402811661a8b71148c41f746e2760
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 807f06da5f13d2194f8a0c75444c62ac59bc06990956282a71d075e1c70df86cc8c83a2daf21531757a1e137ed2f2edfea269a61f43fd1823f1d526d4b33321e
|
7
|
+
data.tar.gz: dea35e397915adc20147b7884b649b01563d616884e9a8f06856f93074071cb646ff42357bf8f391237c58f1f2c3e57acffe5acc34b8ab9bc32629778f63d6b5
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/lib/pxgraphviz.rb
CHANGED
@@ -5,6 +5,22 @@
|
|
5
5
|
|
6
6
|
require 'polyrex'
|
7
7
|
require 'graphvizml'
|
8
|
+
require 'rxfreader'
|
9
|
+
|
10
|
+
|
11
|
+
module RegGem
|
12
|
+
|
13
|
+
def self.register()
|
14
|
+
'
|
15
|
+
hkey_gems
|
16
|
+
doctype
|
17
|
+
pxgraphviz
|
18
|
+
require pxgraphviz
|
19
|
+
class PxGraphViz
|
20
|
+
media_type svg
|
21
|
+
'
|
22
|
+
end
|
23
|
+
end
|
8
24
|
|
9
25
|
|
10
26
|
class PxGraphViz < GraphVizML
|
@@ -12,63 +28,65 @@ class PxGraphViz < GraphVizML
|
|
12
28
|
|
13
29
|
attr_reader :doc, :px
|
14
30
|
|
15
|
-
def initialize(
|
31
|
+
def initialize(obj=nil, style: nil, debug: false, fill: '#778833',
|
16
32
|
stroke: '#999999', text_color: '#ffeecc')
|
17
33
|
|
18
|
-
|
34
|
+
if obj then
|
19
35
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
@doc = doc
|
30
|
-
puts 'pxgraphviz: before super'.info if debug
|
36
|
+
s = RXFReader.read(obj).first
|
37
|
+
@doc = import_string(s)
|
38
|
+
|
39
|
+
puts 'pxgraphviz: before super'.info if debug
|
40
|
+
|
41
|
+
super(@doc, debug: debug, fill: fill,
|
42
|
+
stroke: stroke, text_color: text_color)
|
43
|
+
|
44
|
+
end
|
31
45
|
|
32
|
-
super(doc, debug: debug, fill: fill,
|
33
|
-
stroke: stroke, text_color: text_color)
|
34
|
-
|
35
46
|
@css = "
|
36
|
-
.node
|
47
|
+
.node polygon {stroke: #{stroke}; fill: #{fill}}
|
37
48
|
.node text {fill: #{text_color}}
|
38
49
|
.edge path {stroke: #{stroke}}
|
39
50
|
.edge polygon {stroke: #{stroke}; fill: #{stroke}}
|
40
51
|
"
|
41
|
-
|
42
|
-
end
|
43
|
-
|
44
|
-
|
52
|
+
|
53
|
+
end
|
54
|
+
|
55
|
+
def import(s)
|
56
|
+
s2 = RXFReader.read(s).first
|
57
|
+
@doc = import_string s2
|
58
|
+
@g = build_from_nodes Domle.new(@doc.root.xml)
|
59
|
+
self
|
60
|
+
end
|
61
|
+
|
62
|
+
|
45
63
|
protected
|
46
|
-
|
64
|
+
|
47
65
|
def default_stylesheet()
|
48
66
|
|
49
67
|
<<STYLE
|
50
|
-
node {
|
51
|
-
color: #ddaa66;
|
52
|
-
fillcolor: #
|
53
|
-
fontcolor: #
|
68
|
+
node {
|
69
|
+
color: #ddaa66;
|
70
|
+
fillcolor: #{@fill};
|
71
|
+
fontcolor: #{@text_color};
|
54
72
|
fontname: 'Trebuchet MS';
|
55
|
-
fontsize: 8;
|
73
|
+
fontsize: 8;
|
56
74
|
margin: 0.0;
|
57
|
-
penwidth: 1;
|
75
|
+
penwidth: 1;
|
58
76
|
style: filled;
|
59
|
-
shape: #{@shape};
|
77
|
+
shape: #{@shape};
|
60
78
|
}
|
61
|
-
|
79
|
+
|
62
80
|
a node {
|
63
|
-
color: #0011ee;
|
81
|
+
color: #0011ee;
|
64
82
|
}
|
65
83
|
|
66
84
|
edge {
|
67
85
|
arrowsize: 0.5;
|
68
|
-
color: #
|
69
|
-
fontcolor: #444444;
|
70
|
-
fontname: Verdana;
|
71
|
-
fontsize: 8;
|
86
|
+
color: #{@stroke};
|
87
|
+
fontcolor: #444444;
|
88
|
+
fontname: Verdana;
|
89
|
+
fontsize: 8;
|
72
90
|
#{@type}
|
73
91
|
weight: 1;
|
74
92
|
}
|
@@ -76,11 +94,65 @@ STYLE
|
|
76
94
|
|
77
95
|
end
|
78
96
|
|
97
|
+
|
79
98
|
private
|
80
|
-
|
99
|
+
|
100
|
+
def import_string(s)
|
101
|
+
|
102
|
+
@px = if s =~ /<\?pxgraphviz\b/ then
|
103
|
+
|
104
|
+
header = "<?polyrex schema='items[type, shape]/item[label, connection]' delimiter =' # '?>
|
105
|
+
type: digraph
|
106
|
+
shape: box
|
107
|
+
"
|
108
|
+
s2 = s.slice!(/<\?pxgraphviz\b[^>]*\?>/)
|
109
|
+
|
110
|
+
if s2 then
|
111
|
+
|
112
|
+
attributes = %w(id fill stroke text_color).inject({}) do |r, keyword|
|
113
|
+
found = s2[/(?<=#{keyword}=['"])[^'"]+/]
|
114
|
+
found ? r.merge(keyword.to_sym => found) : r
|
115
|
+
end
|
116
|
+
|
117
|
+
fill, stroke, text_color = %i(fill stroke text_color).map do |x|
|
118
|
+
attributes[x] ? attributes[x] : method(x).call
|
119
|
+
end
|
120
|
+
|
121
|
+
@css = "
|
122
|
+
.node ellipse {stroke: #{stroke}; fill: #{fill}}
|
123
|
+
.node text {fill: #{text_color}}
|
124
|
+
.edge path {stroke: #{stroke}}
|
125
|
+
.edge polygon {stroke: #{stroke}; fill: #{stroke}}
|
126
|
+
"
|
127
|
+
|
128
|
+
end
|
129
|
+
s3 = header + s
|
130
|
+
puts 's3: ' + s3.inspect if @debug
|
131
|
+
Polyrex.new.import(s3)
|
132
|
+
|
133
|
+
else
|
134
|
+
|
135
|
+
Polyrex.new(s)
|
136
|
+
|
137
|
+
end
|
138
|
+
|
139
|
+
@type = @px.summary[:type] == 'digraph' ? 'dir: forward;' : 'dir: none;'
|
140
|
+
@shape = @px.summary[:shape] || 'ellipse;'
|
141
|
+
|
142
|
+
@style ||= default_stylesheet()
|
143
|
+
doc = Rexslt.new(xslt_stylesheet(), @px.to_xml)\
|
144
|
+
.to_doc.root.element('nodes')
|
145
|
+
|
146
|
+
doc.root.elements.first.insert_before Rexle::Element.new('style')\
|
147
|
+
.add_text @style
|
148
|
+
|
149
|
+
doc
|
150
|
+
|
151
|
+
end
|
152
|
+
|
81
153
|
def xslt_stylesheet()
|
82
|
-
|
83
|
-
<<XSLT
|
154
|
+
|
155
|
+
<<XSLT
|
84
156
|
<?xml version="1.0" encoding="UTF-8"?>
|
85
157
|
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
|
86
158
|
<xsl:output method="xml" indent="yes" />
|
@@ -114,12 +186,12 @@ STYLE
|
|
114
186
|
<xsl:element name="a">
|
115
187
|
<xsl:attribute name="href">
|
116
188
|
<xsl:value-of select="summary/url"/>
|
117
|
-
</xsl:attribute>
|
189
|
+
</xsl:attribute>
|
118
190
|
<xsl:call-template name='node'/>
|
119
191
|
</xsl:element>
|
120
192
|
|
121
193
|
</xsl:when>
|
122
|
-
<xsl:otherwise>
|
194
|
+
<xsl:otherwise>
|
123
195
|
|
124
196
|
<xsl:call-template name='node'/>
|
125
197
|
|
@@ -136,33 +208,33 @@ STYLE
|
|
136
208
|
|
137
209
|
<xsl:template name='node'>
|
138
210
|
<xsl:element name="node">
|
139
|
-
|
211
|
+
|
140
212
|
<xsl:attribute name="shape">
|
141
213
|
<xsl:value-of select="summary/shape"/>
|
142
214
|
</xsl:attribute>
|
143
|
-
|
215
|
+
|
144
216
|
<xsl:if test="summary/id">
|
145
217
|
<xsl:attribute name="id">
|
146
218
|
<xsl:value-of select="summary/id"/>
|
147
219
|
</xsl:attribute>
|
148
220
|
</xsl:if>
|
149
|
-
|
221
|
+
|
150
222
|
<xsl:if test="summary/class">
|
151
223
|
<xsl:attribute name="class">
|
152
224
|
<xsl:value-of select="summary/class"/>
|
153
225
|
</xsl:attribute>
|
154
226
|
</xsl:if>
|
155
|
-
|
227
|
+
|
156
228
|
<xsl:if test="summary/connection">
|
157
229
|
<xsl:attribute name="connection">
|
158
230
|
<xsl:value-of select="summary/connection"/>
|
159
231
|
</xsl:attribute>
|
160
|
-
</xsl:if>
|
161
|
-
|
232
|
+
</xsl:if>
|
233
|
+
|
162
234
|
<xsl:apply-templates select='summary'/>
|
163
235
|
<xsl:apply-templates select='records'/>
|
164
236
|
|
165
|
-
</xsl:element>
|
237
|
+
</xsl:element>
|
166
238
|
</xsl:template>
|
167
239
|
|
168
240
|
</xsl:stylesheet>
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pxgraphviz
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Robertson
|
@@ -11,31 +11,31 @@ cert_chain:
|
|
11
11
|
- |
|
12
12
|
-----BEGIN CERTIFICATE-----
|
13
13
|
MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
14
|
+
YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjIwMjIzMTkzNDE0WhcN
|
15
|
+
MjMwMjIzMTkzNDE0WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
|
16
|
+
cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDEi+Tj
|
17
|
+
UQzuglQ5q17fcvr1ji+Q1A5yGy6EApo8waXyaSYiV9eESUDVh4C61pUw4+GC8lD7
|
18
|
+
mz5zFS3UGyQOvoZIoANTFx7WRH3dxpggbxQ9UMgdy+GTYSfBvgEuduTt5hthPNjx
|
19
|
+
fv/McRCCrk7NJjEYhlPDm8gA9hoBd+9J+nBRwLJ7Mt2nxrsXxnf08e6Wa8e0ZoYk
|
20
|
+
jNr0T/Ido8gANCrEXmNcT2Bu8erT5b/4A5ktykt+cVZ8UAqtLr2kbal47QtRMVXk
|
21
|
+
QdK/sw9Bny2bFhsdJQi7KYuU//IkRaH1zyX61rARrzQ7pUh7nsT5/C/bPmdeOUTl
|
22
|
+
wTECwAlN817+XNcPDgxr562yG4Euzj/6FVTkCuMWS7V7sZC/UJE0Xbg0jU+0iKWo
|
23
|
+
2XoE6+SAIBpClO+kmF7zEk3jdoOKKp8XRjJOtRAr3aFeepT+Qms3XzWOo2w0fy4+
|
24
|
+
bVFVRevXtCLOlpp/oFAWzZwrqtruaKuafZadRAILMNRYF4FM8/+h2KNRLZcCAwEA
|
25
|
+
AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUfbcEKTs8
|
26
|
+
lLE1Q8D2XGO9I+5MgOMwJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
|
27
27
|
c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
28
|
+
BgkqhkiG9w0BAQsFAAOCAYEAg9lEWHF3avcbK4ktmHyDJl71m7SvG6QqPGbC5aYT
|
29
|
+
pI3+A9AIIUI9BlF0P4V/mSt9c9YccOjs1oT5qLIvhCpMJtDDy2w+tbzVG9ia1S0t
|
30
|
+
/1EZqbiAKGuMwaLI9P94ku3SjqecHQlMsA+dSqiJpHOBjhPB3fePATtCHIgzwhjT
|
31
|
+
a1SV51/pDyiNhwsUBLhqEMqUBOKBcDnZDXFQ612khj8GLW0TlLd1DnhYjS5HBi57
|
32
|
+
A3HlI1ftQU4ywVtJVyY5++npvwg7N9CxRN02Q3It/OE9UcHVELYsjH8T1IO23U5g
|
33
|
+
LcE3a44K374xnOB2a5Rjvr3n9dmbPIJSUWXAGKtVAxJQaQkXJ/JgORkG3UyOwyxx
|
34
|
+
4+Iryd9KLXqoOlZie53pHP3baUn+NFWsOQTVWyhLDSvj4aG2fFZ4sYMOD8zJHrxl
|
35
|
+
Kw5MEmLLND9M4uj/YjCJaxgvkZ9u4iTBMNldKFS8X5Go7qOpzee47emfjxes++nS
|
36
|
+
6hgbEtPQ0Tr9VNd2zW1qmLkG
|
37
37
|
-----END CERTIFICATE-----
|
38
|
-
date:
|
38
|
+
date: 2022-02-23 00:00:00.000000000 Z
|
39
39
|
dependencies:
|
40
40
|
- !ruby/object:Gem::Dependency
|
41
41
|
name: polyrex
|
@@ -43,42 +43,42 @@ dependencies:
|
|
43
43
|
requirements:
|
44
44
|
- - "~>"
|
45
45
|
- !ruby/object:Gem::Version
|
46
|
-
version: '1.
|
46
|
+
version: '1.4'
|
47
47
|
- - ">="
|
48
48
|
- !ruby/object:Gem::Version
|
49
|
-
version: 1.
|
49
|
+
version: 1.4.0
|
50
50
|
type: :runtime
|
51
51
|
prerelease: false
|
52
52
|
version_requirements: !ruby/object:Gem::Requirement
|
53
53
|
requirements:
|
54
54
|
- - "~>"
|
55
55
|
- !ruby/object:Gem::Version
|
56
|
-
version: '1.
|
56
|
+
version: '1.4'
|
57
57
|
- - ">="
|
58
58
|
- !ruby/object:Gem::Version
|
59
|
-
version: 1.
|
59
|
+
version: 1.4.0
|
60
60
|
- !ruby/object:Gem::Dependency
|
61
61
|
name: graphvizml
|
62
62
|
requirement: !ruby/object:Gem::Requirement
|
63
63
|
requirements:
|
64
64
|
- - "~>"
|
65
65
|
- !ruby/object:Gem::Version
|
66
|
-
version: '0.
|
66
|
+
version: '0.7'
|
67
67
|
- - ">="
|
68
68
|
- !ruby/object:Gem::Version
|
69
|
-
version: 0.
|
69
|
+
version: 0.7.1
|
70
70
|
type: :runtime
|
71
71
|
prerelease: false
|
72
72
|
version_requirements: !ruby/object:Gem::Requirement
|
73
73
|
requirements:
|
74
74
|
- - "~>"
|
75
75
|
- !ruby/object:Gem::Version
|
76
|
-
version: '0.
|
76
|
+
version: '0.7'
|
77
77
|
- - ">="
|
78
78
|
- !ruby/object:Gem::Version
|
79
|
-
version: 0.
|
79
|
+
version: 0.7.1
|
80
80
|
description:
|
81
|
-
email:
|
81
|
+
email: digital.robertson@gmail.com
|
82
82
|
executables: []
|
83
83
|
extensions: []
|
84
84
|
extra_rdoc_files: []
|
@@ -103,7 +103,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
103
103
|
- !ruby/object:Gem::Version
|
104
104
|
version: '0'
|
105
105
|
requirements: []
|
106
|
-
rubygems_version: 3.
|
106
|
+
rubygems_version: 3.2.22
|
107
107
|
signing_key:
|
108
108
|
specification_version: 4
|
109
109
|
summary: Generates a GraphViz Markup Language file from a Polyrex document
|
metadata.gz.sig
CHANGED
Binary file
|