jstreebuilder 0.2.0 → 0.3.0
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 +152 -14
- 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: becee86e064c7f3cc2c1f85d276181bf4b4e8fbf5452c12653984c1bc1c18ea1
|
4
|
+
data.tar.gz: eaad9031c261b926b2bf5356dcc8aa915a096ab1277fcb562463d8df8667bc7d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 161ef34be304b151fb0ea7a3a796cf681b9b1d2b93edbbd43a5e055bcac2730feae245256ac95c5e1aeb33e5ced23ea500882f00c1e0e52e9015a4fe064f95ed
|
7
|
+
data.tar.gz: ebc9f22165fc91925d568dcb55423bc7986bc68189477c24a5223226c504d40b19c484dbc1d6295580525b01852149d61034adbf6cbdd8360c4cab30b66544bf
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/lib/jstreebuilder.rb
CHANGED
@@ -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/entry' />
|
82
|
+
</xsl:element>
|
83
|
+
|
84
|
+
</xsl:template>
|
85
|
+
|
86
|
+
<xsl:template match='entry'>
|
87
|
+
|
88
|
+
<xsl:choose>
|
89
|
+
<xsl:when test='records/entry'>
|
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/entry' />
|
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
|
@@ -116,6 +176,61 @@ ul, #myUL {
|
|
116
176
|
}
|
117
177
|
]
|
118
178
|
|
179
|
+
SIDEBAR_CSS = TREE_CSS + %q[
|
180
|
+
|
181
|
+
body {
|
182
|
+
font-family: "Lato", sans-serif;
|
183
|
+
}
|
184
|
+
|
185
|
+
.sidenav {
|
186
|
+
width: 25%;
|
187
|
+
position: fixed;
|
188
|
+
z-index: 1;
|
189
|
+
top: 20px;
|
190
|
+
left: 10px;
|
191
|
+
height: 90%;
|
192
|
+
overflow: auto;
|
193
|
+
background: #eee;
|
194
|
+
overflow-x: hidden;
|
195
|
+
padding: 12px 0;
|
196
|
+
}
|
197
|
+
|
198
|
+
.sidenav a {
|
199
|
+
padding: 2px 8px 2px 6px;
|
200
|
+
text-decoration: none;
|
201
|
+
font-size: 23px;
|
202
|
+
color: #2166F3;
|
203
|
+
|
204
|
+
}
|
205
|
+
|
206
|
+
.sidenav a:hover {
|
207
|
+
color: #064579;
|
208
|
+
}
|
209
|
+
|
210
|
+
.main {
|
211
|
+
margin-left: 25%; /* Same width as the sidebar + left position in px */
|
212
|
+
font-size: 26px; /* Increased text to enable scrolling */
|
213
|
+
padding: 0px 10px;
|
214
|
+
}
|
215
|
+
|
216
|
+
@media screen and (max-height: 450px) {
|
217
|
+
.sidenav {padding-top: 15px;}
|
218
|
+
.sidenav a {font-size: 19 px;}
|
219
|
+
}
|
220
|
+
]
|
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
|
+
|
119
234
|
TREE_JS =<<EOF
|
120
235
|
var toggler = document.getElementsByClassName("caret");
|
121
236
|
var i;
|
@@ -128,14 +243,18 @@ for (i = 0; i < toggler.length; i++) {
|
|
128
243
|
}
|
129
244
|
EOF
|
130
245
|
|
246
|
+
SIDEBAR_JS = TREE_JS
|
247
|
+
|
248
|
+
PLAIN_JS = ''
|
249
|
+
|
131
250
|
class TreeBuilder
|
132
251
|
using ColouredText
|
133
252
|
|
134
253
|
attr_reader :to_tree
|
135
254
|
|
136
|
-
def initialize(s, debug: false)
|
255
|
+
def initialize(s, hn: 1, debug: false)
|
137
256
|
|
138
|
-
@debug = debug
|
257
|
+
@debug, @hn = debug, hn
|
139
258
|
html = Kramdown::Document.new(s).to_html
|
140
259
|
puts ('html: ' + html.inspect) if @debug
|
141
260
|
a = scan_headings(html)
|
@@ -161,7 +280,7 @@ EOF
|
|
161
280
|
|
162
281
|
end
|
163
282
|
|
164
|
-
def make_tree(a, indent=0, hn
|
283
|
+
def make_tree(a, indent=0, hn=@hn)
|
165
284
|
|
166
285
|
if @debug then
|
167
286
|
puts 'inside make_tree'.debug
|
@@ -192,7 +311,7 @@ EOF
|
|
192
311
|
|
193
312
|
end
|
194
313
|
|
195
|
-
def scan_headings(s, n
|
314
|
+
def scan_headings(s, n=@hn)
|
196
315
|
|
197
316
|
s.split(/(?=<h#{n})/).map do |x|
|
198
317
|
x.include?('<h' + (n+1).to_s) ? scan_headings(x, n+1) : x
|
@@ -208,7 +327,7 @@ EOF
|
|
208
327
|
def initialize(unknown=nil, options={})
|
209
328
|
|
210
329
|
if unknown.is_a? String or unknown.is_a? Symbol then
|
211
|
-
type =
|
330
|
+
type = unknown.to_sym
|
212
331
|
elsif unknown.is_a? Hash
|
213
332
|
options = {type: :tree}.merge(unknown)
|
214
333
|
type = options[:type]
|
@@ -216,7 +335,7 @@ EOF
|
|
216
335
|
|
217
336
|
@debug = options[:debug]
|
218
337
|
|
219
|
-
@types = %i(tree)
|
338
|
+
@types = %i(tree sidebar plain)
|
220
339
|
|
221
340
|
build(type, options) if type
|
222
341
|
|
@@ -281,8 +400,8 @@ EOF
|
|
281
400
|
@html = s.gsub(/<\/div>/,'\0' + "\n").strip.lines[1..-2]\
|
282
401
|
.map {|x| x.sub(/^ /,'') }.join
|
283
402
|
|
284
|
-
@css =
|
285
|
-
@js =
|
403
|
+
@css = type.to_s.upcase + '_CSS'
|
404
|
+
@js = type.to_s.upcase + '_JS'
|
286
405
|
|
287
406
|
end
|
288
407
|
|
@@ -299,18 +418,27 @@ EOF
|
|
299
418
|
end
|
300
419
|
|
301
420
|
|
302
|
-
def tree(opt={})
|
421
|
+
def tree(opt={}, xslt=XSLT)
|
303
422
|
|
304
|
-
|
423
|
+
raw_src = opt[:src]
|
424
|
+
|
425
|
+
src, _ = RXFHelper.read raw_src
|
426
|
+
|
427
|
+
header = "<?polyrex schema='entries[title]/entry[title,url]' \
|
428
|
+
delimiter=' # '?>\n\n"
|
305
429
|
|
306
430
|
s = if src =~ /<tree>/ then
|
307
431
|
|
308
432
|
build_px(src)
|
309
433
|
|
310
|
-
elsif src =~
|
311
|
-
src
|
434
|
+
elsif src =~ /<\?polyrex-links\?>/
|
435
|
+
header + src.sub(/<\?polyrex-links\?>/,'').lstrip
|
436
|
+
elsif src =~ /<\?polyrex /
|
437
|
+
src
|
438
|
+
elsif src =~ /^#+/
|
439
|
+
build_px(TreeBuilder.new(src, hn: opt[:hn],debug: @debug).to_tree)
|
312
440
|
else
|
313
|
-
|
441
|
+
header + src.lstrip
|
314
442
|
end
|
315
443
|
|
316
444
|
puts ('s: ' + s.inspect).debug if @debug
|
@@ -321,10 +449,20 @@ EOF
|
|
321
449
|
puts ('px: ' + px.inspect).debug if @debug
|
322
450
|
puts ('px.to_xml: ' + px.to_xml.inspect).debug if @debug
|
323
451
|
doc = Nokogiri::XML(px.to_xml)
|
324
|
-
xslt = Nokogiri::XSLT(
|
452
|
+
xslt = Nokogiri::XSLT(xslt)
|
325
453
|
|
326
454
|
@ul = xslt.transform(doc).to_s.lines[1..-1].join
|
327
455
|
|
328
456
|
end
|
457
|
+
|
458
|
+
def sidebar(opt={})
|
459
|
+
doc = Rexle.new(tree(opt))
|
460
|
+
doc.root.attributes[:class] = 'sidenav'
|
461
|
+
@ul = doc.xml(declaration: false)
|
462
|
+
end
|
463
|
+
|
464
|
+
def plain(opt={})
|
465
|
+
tree opt, PLAIN
|
466
|
+
end
|
329
467
|
|
330
468
|
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.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
|
+
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
|