jstreebuilder 0.2.1 → 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/lib/jstreebuilder.rb +119 -24
- metadata +44 -44
- 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: 78cae4a1eca195d5911489593cd19215b7ff070f3a64dda3d335d475e204ffa3
|
4
|
+
data.tar.gz: 9eaeee9e2f4ed52fa14d3f84a32fae4cd451e7f13c46601e2fa01a7a61cf0dad
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e3bdc4fcc00377c1acebf131867c6c221549f0193430c97026f745398cadaa60d348e7dd4002f3defe59e79733a7f1eab0a977d4a6779f51ea6227702448b5b5
|
7
|
+
data.tar.gz: 6ddaf977fdeeb5dc201ec701ca06db70bae1cfa9fbc3ec22665559b57b41feceb58c762a10343816b48eb2a6694e656b53788b8f53cf6bdf8723010b1ecd440d
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/lib/jstreebuilder.rb
CHANGED
@@ -16,15 +16,15 @@ XSLT = %q[
|
|
16
16
|
|
17
17
|
<xsl:element name='ul'>
|
18
18
|
<xsl:attribute name='id'>myUL</xsl:attribute>
|
19
|
-
<xsl:apply-templates select='records/
|
19
|
+
<xsl:apply-templates select='records/link' />
|
20
20
|
</xsl:element>
|
21
21
|
|
22
22
|
</xsl:template>
|
23
23
|
|
24
|
-
<xsl:template match='
|
24
|
+
<xsl:template match='link'>
|
25
25
|
|
26
26
|
<xsl:choose>
|
27
|
-
<xsl:when test='records/
|
27
|
+
<xsl:when test='records/link'>
|
28
28
|
|
29
29
|
<xsl:element name='li'>
|
30
30
|
|
@@ -43,7 +43,7 @@ XSLT = %q[
|
|
43
43
|
</xsl:choose>
|
44
44
|
</xsl:element>
|
45
45
|
<ul class='nested'>
|
46
|
-
<xsl:apply-templates select='records/
|
46
|
+
<xsl:apply-templates select='records/link' />
|
47
47
|
</ul>
|
48
48
|
</xsl:element>
|
49
49
|
|
@@ -70,6 +70,66 @@ XSLT = %q[
|
|
70
70
|
</xsl:stylesheet>
|
71
71
|
]
|
72
72
|
|
73
|
+
PLAIN = %q[
|
74
|
+
<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform' version='1.0'>
|
75
|
+
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes" />
|
76
|
+
|
77
|
+
<xsl:template match='entries'>
|
78
|
+
|
79
|
+
<xsl:element name='ul'>
|
80
|
+
<xsl:attribute name='id'>myUL</xsl:attribute>
|
81
|
+
<xsl:apply-templates select='records/link' />
|
82
|
+
</xsl:element>
|
83
|
+
|
84
|
+
</xsl:template>
|
85
|
+
|
86
|
+
<xsl:template match='link'>
|
87
|
+
|
88
|
+
<xsl:choose>
|
89
|
+
<xsl:when test='records/link'>
|
90
|
+
|
91
|
+
<xsl:element name='li'>
|
92
|
+
|
93
|
+
<xsl:choose>
|
94
|
+
<xsl:when test='summary/url != ""'>
|
95
|
+
<xsl:element name='a'>
|
96
|
+
<xsl:attribute name='href'><xsl:value-of select='summary/url'/></xsl:attribute>
|
97
|
+
<xsl:value-of select='summary/title'/>
|
98
|
+
</xsl:element>
|
99
|
+
</xsl:when>
|
100
|
+
<xsl:otherwise>
|
101
|
+
<xsl:value-of select='summary/title'/>
|
102
|
+
</xsl:otherwise>
|
103
|
+
</xsl:choose>
|
104
|
+
</xsl:element>
|
105
|
+
<ul>
|
106
|
+
<xsl:apply-templates select='records/link' />
|
107
|
+
</ul>
|
108
|
+
|
109
|
+
|
110
|
+
</xsl:when>
|
111
|
+
<xsl:otherwise>
|
112
|
+
<xsl:element name='li'>
|
113
|
+
<xsl:choose>
|
114
|
+
<xsl:when test='summary/url != ""'>
|
115
|
+
<xsl:element name='a'>
|
116
|
+
<xsl:attribute name='href'><xsl:value-of select='summary/url'/></xsl:attribute>
|
117
|
+
<xsl:value-of select='summary/title'/>
|
118
|
+
</xsl:element>
|
119
|
+
</xsl:when>
|
120
|
+
<xsl:otherwise>
|
121
|
+
<xsl:value-of select='summary/title'/>
|
122
|
+
</xsl:otherwise>
|
123
|
+
</xsl:choose>
|
124
|
+
</xsl:element>
|
125
|
+
</xsl:otherwise>
|
126
|
+
</xsl:choose>
|
127
|
+
|
128
|
+
</xsl:template>
|
129
|
+
|
130
|
+
</xsl:stylesheet>
|
131
|
+
]
|
132
|
+
|
73
133
|
|
74
134
|
class JsTreeBuilder
|
75
135
|
using ColouredText
|
@@ -128,6 +188,8 @@ body {
|
|
128
188
|
z-index: 1;
|
129
189
|
top: 20px;
|
130
190
|
left: 10px;
|
191
|
+
height: 90%;
|
192
|
+
overflow: auto;
|
131
193
|
background: #eee;
|
132
194
|
overflow-x: hidden;
|
133
195
|
padding: 12px 0;
|
@@ -157,6 +219,18 @@ body {
|
|
157
219
|
}
|
158
220
|
]
|
159
221
|
|
222
|
+
PLAIN_CSS = "
|
223
|
+
ul {
|
224
|
+
list-style-type: none;
|
225
|
+
background-color: transparent;
|
226
|
+
margin: 0.1em 0.1em; padding: 0.3em 1.3em
|
227
|
+
}
|
228
|
+
ul li {
|
229
|
+
background-color: transparent;
|
230
|
+
margin: 0.1em 0.1em; padding: 0.3em 0.3em
|
231
|
+
}
|
232
|
+
"
|
233
|
+
|
160
234
|
TREE_JS =<<EOF
|
161
235
|
var toggler = document.getElementsByClassName("caret");
|
162
236
|
var i;
|
@@ -171,14 +245,16 @@ EOF
|
|
171
245
|
|
172
246
|
SIDEBAR_JS = TREE_JS
|
173
247
|
|
248
|
+
PLAIN_JS = ''
|
249
|
+
|
174
250
|
class TreeBuilder
|
175
251
|
using ColouredText
|
176
252
|
|
177
253
|
attr_reader :to_tree
|
178
254
|
|
179
|
-
def initialize(s, debug: false)
|
255
|
+
def initialize(s, hn: 1, debug: false)
|
180
256
|
|
181
|
-
@debug = debug
|
257
|
+
@debug, @hn = debug, hn
|
182
258
|
html = Kramdown::Document.new(s).to_html
|
183
259
|
puts ('html: ' + html.inspect) if @debug
|
184
260
|
a = scan_headings(html)
|
@@ -204,7 +280,7 @@ SIDEBAR_JS = TREE_JS
|
|
204
280
|
|
205
281
|
end
|
206
282
|
|
207
|
-
def make_tree(a, indent=0, hn
|
283
|
+
def make_tree(a, indent=0, hn=@hn)
|
208
284
|
|
209
285
|
if @debug then
|
210
286
|
puts 'inside make_tree'.debug
|
@@ -235,7 +311,7 @@ SIDEBAR_JS = TREE_JS
|
|
235
311
|
|
236
312
|
end
|
237
313
|
|
238
|
-
def scan_headings(s, n
|
314
|
+
def scan_headings(s, n=@hn)
|
239
315
|
|
240
316
|
s.split(/(?=<h#{n})/).map do |x|
|
241
317
|
x.include?('<h' + (n+1).to_s) ? scan_headings(x, n+1) : x
|
@@ -259,7 +335,7 @@ SIDEBAR_JS = TREE_JS
|
|
259
335
|
|
260
336
|
@debug = options[:debug]
|
261
337
|
|
262
|
-
@types = %i(tree sidebar)
|
338
|
+
@types = %i(tree sidebar plain)
|
263
339
|
|
264
340
|
build(type, options) if type
|
265
341
|
|
@@ -324,14 +400,14 @@ SIDEBAR_JS = TREE_JS
|
|
324
400
|
@html = s.gsub(/<\/div>/,'\0' + "\n").strip.lines[1..-2]\
|
325
401
|
.map {|x| x.sub(/^ /,'') }.join
|
326
402
|
|
327
|
-
@css =
|
328
|
-
@js =
|
403
|
+
@css = type.to_s.upcase + '_CSS'
|
404
|
+
@js = type.to_s.upcase + '_JS'
|
329
405
|
|
330
406
|
end
|
331
407
|
|
332
408
|
def build_px(tree)
|
333
409
|
|
334
|
-
schema = 'entries/
|
410
|
+
schema = 'entries/link[title, url]'
|
335
411
|
xslt_schema = 'tree/item[@title:title, @url:url]'
|
336
412
|
|
337
413
|
# transform the tree xml into a polyrex document
|
@@ -342,29 +418,44 @@ SIDEBAR_JS = TREE_JS
|
|
342
418
|
end
|
343
419
|
|
344
420
|
|
345
|
-
def tree(opt={})
|
421
|
+
def tree(opt={}, xslt=XSLT)
|
346
422
|
|
347
|
-
|
423
|
+
raw_src = opt[:src]
|
348
424
|
|
349
|
-
|
425
|
+
px = if raw_src.is_a? String then
|
426
|
+
|
427
|
+
src, _ = RXFHelper.read raw_src
|
428
|
+
|
429
|
+
header = "<?polyrex schema='entries[title]/link[title,url]' \
|
430
|
+
delimiter=' # '?>\n\n"
|
431
|
+
|
432
|
+
s = if src =~ /<tree>/ then
|
433
|
+
|
434
|
+
build_px(src)
|
435
|
+
|
436
|
+
elsif src =~ /<\?polyrex-links\?>/
|
437
|
+
header + src.sub(/<\?polyrex-links\?>/,'').lstrip
|
438
|
+
elsif src =~ /<\?polyrex /
|
439
|
+
src
|
440
|
+
elsif src =~ /^#+/
|
441
|
+
build_px(TreeBuilder.new(src, hn: opt[:hn],debug: @debug).to_tree)
|
442
|
+
else
|
443
|
+
header + src.lstrip
|
444
|
+
end
|
350
445
|
|
351
|
-
|
446
|
+
puts ('s: ' + s.inspect).debug if @debug
|
447
|
+
Polyrex.new(s)
|
352
448
|
|
353
|
-
elsif
|
354
|
-
|
355
|
-
else
|
356
|
-
build_px(TreeBuilder.new(src, debug: @debug).to_tree)
|
449
|
+
elsif raw_src.is_a?(Polyrex) # detects PolyrexLinks as Polyrex too
|
450
|
+
raw_src
|
357
451
|
end
|
358
452
|
|
359
|
-
puts ('s: ' + s.inspect).debug if @debug
|
360
|
-
px = Polyrex.new(s)
|
361
|
-
|
362
453
|
# transform the polyrex xml into a nested HTML list
|
363
454
|
#@ul = Rexslt.new(px.to_xml, XSLT).to_xml
|
364
455
|
puts ('px: ' + px.inspect).debug if @debug
|
365
456
|
puts ('px.to_xml: ' + px.to_xml.inspect).debug if @debug
|
366
457
|
doc = Nokogiri::XML(px.to_xml)
|
367
|
-
xslt = Nokogiri::XSLT(
|
458
|
+
xslt = Nokogiri::XSLT(xslt)
|
368
459
|
|
369
460
|
@ul = xslt.transform(doc).to_s.lines[1..-1].join
|
370
461
|
|
@@ -375,5 +466,9 @@ SIDEBAR_JS = TREE_JS
|
|
375
466
|
doc.root.attributes[:class] = 'sidenav'
|
376
467
|
@ul = doc.xml(declaration: false)
|
377
468
|
end
|
469
|
+
|
470
|
+
def plain(opt={})
|
471
|
+
tree opt, PLAIN
|
472
|
+
end
|
378
473
|
|
379
474
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jstreebuilder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.1
|
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
|
+
YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjEwNTI1MTEyMTAzWhcN
|
15
|
+
MjIwNTI1MTEyMTAzWjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
|
16
|
+
cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDObxCX
|
17
|
+
EZwr753Md0Kcfa5QIMA3vdEBwOSu8MxOvfopBtFh68Vs0NA9BUAyyBiKIpJOjpBi
|
18
|
+
Qiv82JXyc5UBkBU8pqGYWTMaYgmyJVKyCjxZMYxgeqqYz0aZHuCHXsisaDMz7i5z
|
19
|
+
2992PlPD+4nKZArT9spj6JzVK+yEm2ijjS+oscpxhUNPARv4UzKOdSlAnYzxWooH
|
20
|
+
uoaEwzcPoVSWsj/vDCWwkAGUZCDmn1Z6oLxVXK3BaFxxSyo4hVZro0Zgk1Y4qjeK
|
21
|
+
HHe9navqDWye9dS0nuHX3/PwgLStvJ7IQs+tyjYb8ytuKO+uKU9I4Sr+gx8YlFKd
|
22
|
+
OrS+RLaCNJjfh6elNG81CUWZwSe06fFxFywz2RXrp0ZeI0QJ4I0oxk1LgTl20M4Z
|
23
|
+
nXLVhqSr1Yb1EEcp/L7A5cuQ0pbz6PvN/5F+cUyTMrRCBWsywZ2Ht5lfgjwPKjcT
|
24
|
+
h5h62DaZ9epUm/YUFzQQTxOGZY2xivpH54FMIcqGjmrHB2ASNzKo+6WtEyMCAwEA
|
25
|
+
AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQU8tcAulKV
|
26
|
+
0dnJjCElomHr44nHGPMwJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
|
27
27
|
c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
28
|
+
BgkqhkiG9w0BAQsFAAOCAYEAK2zu4AMtsc4SyemYdrxWU+H7mq8f7DOGxBLLmyvr
|
29
|
+
4nrXLRtXIXyLh5A+PSZZYo4yPMTWBceu9llFl/DQz6LAy3DWhrJeIkQLhjr2yMcj
|
30
|
+
2AYCywZoz21O4ZAD/VWGVBXoiwBKgGVHKH5Tg0YP+rPamQpTx/R504XJtsyDDl8c
|
31
|
+
8Dkxnyujqc5uhuRYzTdg2uB8tN/yGLjxp4TserAddrAXmT4eyX2pz5wLw3T4QnUM
|
32
|
+
M5Rbh265lM2dto4oF8l99nEqzjizaTYSqW/QUez+H+8LBuUL3vOZiLJVWpouE2q4
|
33
|
+
RRwa4taVOEYrfq15x2CCvAGTyAmVemNhMNKd1iQEbf0CCzlC9iUlhy71/7OwkFgP
|
34
|
+
Ylqv2eiEKke192rff7eV/rDZhR70zordGPaRHgkuRRs6Ld9yeKS0CduK9YiMeoaf
|
35
|
+
8XaALSKxr3idyvVbBK920Fok7uGfchqJrIU5aP7qDogCmzHHHbiKzd+2arCbxISY
|
36
|
+
+eOXFHOtwvjBqRlX2zAMEukI
|
37
37
|
-----END CERTIFICATE-----
|
38
|
-
date:
|
38
|
+
date: 2021-05-25 00:00:00.000000000 Z
|
39
39
|
dependencies:
|
40
40
|
- !ruby/object:Gem::Dependency
|
41
41
|
name: nokogiri
|
@@ -43,40 +43,40 @@ dependencies:
|
|
43
43
|
requirements:
|
44
44
|
- - "~>"
|
45
45
|
- !ruby/object:Gem::Version
|
46
|
-
version: '1.
|
46
|
+
version: '1.11'
|
47
47
|
- - ">="
|
48
48
|
- !ruby/object:Gem::Version
|
49
|
-
version: 1.
|
49
|
+
version: 1.11.5
|
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.11'
|
57
57
|
- - ">="
|
58
58
|
- !ruby/object:Gem::Version
|
59
|
-
version: 1.
|
59
|
+
version: 1.11.5
|
60
60
|
- !ruby/object:Gem::Dependency
|
61
61
|
name: polyrex
|
62
62
|
requirement: !ruby/object:Gem::Requirement
|
63
63
|
requirements:
|
64
|
-
- - ">="
|
65
|
-
- !ruby/object:Gem::Version
|
66
|
-
version: 1.3.0
|
67
64
|
- - "~>"
|
68
65
|
- !ruby/object:Gem::Version
|
69
66
|
version: '1.3'
|
67
|
+
- - ">="
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 1.3.2
|
70
70
|
type: :runtime
|
71
71
|
prerelease: false
|
72
72
|
version_requirements: !ruby/object:Gem::Requirement
|
73
73
|
requirements:
|
74
|
-
- - ">="
|
75
|
-
- !ruby/object:Gem::Version
|
76
|
-
version: 1.3.0
|
77
74
|
- - "~>"
|
78
75
|
- !ruby/object:Gem::Version
|
79
76
|
version: '1.3'
|
77
|
+
- - ">="
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: 1.3.2
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: polyrex-xslt
|
82
82
|
requirement: !ruby/object:Gem::Requirement
|
@@ -101,24 +101,24 @@ dependencies:
|
|
101
101
|
name: kramdown
|
102
102
|
requirement: !ruby/object:Gem::Requirement
|
103
103
|
requirements:
|
104
|
-
- - ">="
|
105
|
-
- !ruby/object:Gem::Version
|
106
|
-
version: 2.1.0
|
107
104
|
- - "~>"
|
108
105
|
- !ruby/object:Gem::Version
|
109
|
-
version: '2.
|
106
|
+
version: '2.3'
|
107
|
+
- - ">="
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: 2.3.1
|
110
110
|
type: :runtime
|
111
111
|
prerelease: false
|
112
112
|
version_requirements: !ruby/object:Gem::Requirement
|
113
113
|
requirements:
|
114
|
-
- - ">="
|
115
|
-
- !ruby/object:Gem::Version
|
116
|
-
version: 2.1.0
|
117
114
|
- - "~>"
|
118
115
|
- !ruby/object:Gem::Version
|
119
|
-
version: '2.
|
116
|
+
version: '2.3'
|
117
|
+
- - ">="
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: 2.3.1
|
120
120
|
description:
|
121
|
-
email:
|
121
|
+
email: digital.robertson@gmail.com
|
122
122
|
executables: []
|
123
123
|
extensions: []
|
124
124
|
extra_rdoc_files: []
|
@@ -143,7 +143,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
143
143
|
- !ruby/object:Gem::Version
|
144
144
|
version: '0'
|
145
145
|
requirements: []
|
146
|
-
rubygems_version: 3.
|
146
|
+
rubygems_version: 3.1.2
|
147
147
|
signing_key:
|
148
148
|
specification_version: 4
|
149
149
|
summary: Generates an HTML tree from XML or Markdown.
|
metadata.gz.sig
CHANGED
Binary file
|