jstreebuilder 0.2.3 → 0.3.2
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/lib/jstreebuilder.rb +183 -86
- data.tar.gz.sig +0 -0
- metadata +45 -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: fa844d152f822a43de4979ae351e7fa30a9adbd35ae6f18cf07a6824f5da74a3
|
4
|
+
data.tar.gz: 91928df4b49e8f62a26ed9529c602300324df0059c2e93da9c54e6d6e77f6c12
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2ae8e3756a51d79dcea3e222fc43a2fafa2f233a497096bb2e0d733082d8339ff63b2fca0252c44871895ced3b5eae4aae0abc8cc0d053b6211684fa0d1a24ca
|
7
|
+
data.tar.gz: 1e1ef267edb8bf7eaa6197b7bbc9b5bfb2af8059c43ae214a3073fab07103dfb16edb0ab22277f201306e164e544dbe8af64cc02b2c1b99597cc100751afbb34
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/lib/jstreebuilder.rb
CHANGED
@@ -8,7 +8,6 @@ require 'polyrex'
|
|
8
8
|
require 'kramdown'
|
9
9
|
|
10
10
|
|
11
|
-
|
12
11
|
XSLT = %q[
|
13
12
|
<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform' version='1.0'>
|
14
13
|
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes" />
|
@@ -17,49 +16,109 @@ XSLT = %q[
|
|
17
16
|
|
18
17
|
<xsl:element name='ul'>
|
19
18
|
<xsl:attribute name='id'>myUL</xsl:attribute>
|
20
|
-
<xsl:apply-templates select='records/
|
19
|
+
<xsl:apply-templates select='records/link' />
|
21
20
|
</xsl:element>
|
22
21
|
|
23
22
|
</xsl:template>
|
24
23
|
|
25
|
-
<xsl:template match='
|
24
|
+
<xsl:template match='link'>
|
26
25
|
|
27
26
|
<xsl:choose>
|
28
|
-
<xsl:when test='records/
|
27
|
+
<xsl:when test='records/link'>
|
29
28
|
|
30
29
|
<xsl:element name='li'>
|
31
30
|
|
32
|
-
<xsl:element name='span'>
|
31
|
+
<xsl:element name='span'>
|
33
32
|
<xsl:attribute name="class">caret</xsl:attribute>
|
34
33
|
<xsl:choose>
|
35
34
|
<xsl:when test='summary/url != ""'>
|
36
35
|
<xsl:element name='a'>
|
37
36
|
<xsl:attribute name='href'><xsl:value-of select='summary/url'/></xsl:attribute>
|
38
|
-
<xsl:value-of select='summary/title'/>
|
37
|
+
<xsl:value-of select='summary/title'/>
|
39
38
|
</xsl:element>
|
40
39
|
</xsl:when>
|
41
40
|
<xsl:otherwise>
|
42
|
-
<xsl:value-of select='summary/title'/>
|
41
|
+
<xsl:value-of select='summary/title'/>
|
43
42
|
</xsl:otherwise>
|
44
43
|
</xsl:choose>
|
45
44
|
</xsl:element>
|
46
45
|
<ul class='nested'>
|
47
|
-
<xsl:apply-templates select='records/
|
46
|
+
<xsl:apply-templates select='records/link' />
|
48
47
|
</ul>
|
49
48
|
</xsl:element>
|
50
49
|
|
51
50
|
</xsl:when>
|
52
51
|
<xsl:otherwise>
|
53
|
-
<xsl:element name='li'>
|
52
|
+
<xsl:element name='li'>
|
54
53
|
<xsl:choose>
|
55
54
|
<xsl:when test='summary/url != ""'>
|
56
55
|
<xsl:element name='a'>
|
57
56
|
<xsl:attribute name='href'><xsl:value-of select='summary/url'/></xsl:attribute>
|
58
|
-
<xsl:value-of select='summary/title'/>
|
57
|
+
<xsl:value-of select='summary/title'/>
|
59
58
|
</xsl:element>
|
60
59
|
</xsl:when>
|
61
60
|
<xsl:otherwise>
|
62
|
-
<xsl:value-of select='summary/title'/>
|
61
|
+
<xsl:value-of select='summary/title'/>
|
62
|
+
</xsl:otherwise>
|
63
|
+
</xsl:choose>
|
64
|
+
</xsl:element>
|
65
|
+
</xsl:otherwise>
|
66
|
+
</xsl:choose>
|
67
|
+
|
68
|
+
</xsl:template>
|
69
|
+
|
70
|
+
</xsl:stylesheet>
|
71
|
+
]
|
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'/>
|
63
122
|
</xsl:otherwise>
|
64
123
|
</xsl:choose>
|
65
124
|
</xsl:element>
|
@@ -89,7 +148,7 @@ ul, #myUL {
|
|
89
148
|
|
90
149
|
/* Style the caret/arrow */
|
91
150
|
.caret {
|
92
|
-
cursor: pointer;
|
151
|
+
cursor: pointer;
|
93
152
|
user-select: none; /* Prevent text selection */
|
94
153
|
}
|
95
154
|
|
@@ -103,7 +162,7 @@ ul, #myUL {
|
|
103
162
|
|
104
163
|
/* Rotate the caret/arrow icon when clicked on (using JavaScript) */
|
105
164
|
.caret-down::before {
|
106
|
-
transform: rotate(90deg);
|
165
|
+
transform: rotate(90deg);
|
107
166
|
}
|
108
167
|
|
109
168
|
/* Hide the nested list */
|
@@ -118,7 +177,7 @@ ul, #myUL {
|
|
118
177
|
]
|
119
178
|
|
120
179
|
SIDEBAR_CSS = TREE_CSS + %q[
|
121
|
-
|
180
|
+
|
122
181
|
body {
|
123
182
|
font-family: "Lato", sans-serif;
|
124
183
|
}
|
@@ -129,6 +188,8 @@ body {
|
|
129
188
|
z-index: 1;
|
130
189
|
top: 20px;
|
131
190
|
left: 10px;
|
191
|
+
height: 90%;
|
192
|
+
overflow: auto;
|
132
193
|
background: #eee;
|
133
194
|
overflow-x: hidden;
|
134
195
|
padding: 12px 0;
|
@@ -158,6 +219,18 @@ body {
|
|
158
219
|
}
|
159
220
|
]
|
160
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
|
+
|
161
234
|
TREE_JS =<<EOF
|
162
235
|
var toggler = document.getElementsByClassName("caret");
|
163
236
|
var i;
|
@@ -172,6 +245,8 @@ EOF
|
|
172
245
|
|
173
246
|
SIDEBAR_JS = TREE_JS
|
174
247
|
|
248
|
+
PLAIN_JS = ''
|
249
|
+
|
175
250
|
class TreeBuilder
|
176
251
|
using ColouredText
|
177
252
|
|
@@ -184,42 +259,42 @@ SIDEBAR_JS = TREE_JS
|
|
184
259
|
puts ('html: ' + html.inspect) if @debug
|
185
260
|
a = scan_headings(html)
|
186
261
|
puts ('a: ' + a.inspect) if @debug
|
187
|
-
|
262
|
+
|
188
263
|
s2 = make_tree(a)
|
189
264
|
puts ('s2: ' + s2.inspect) if @debug
|
190
265
|
tree = LineTree.new(s2).to_tree
|
191
|
-
|
266
|
+
|
192
267
|
puts ('tree: ' + tree.inspect).debug if @debug
|
193
|
-
|
268
|
+
|
194
269
|
doc = Rexle.new(tree)
|
195
270
|
doc.root.each_recursive do |node|
|
196
|
-
|
197
|
-
h = node.attributes
|
271
|
+
|
272
|
+
h = node.attributes
|
198
273
|
puts ('h: ' + h.inspect).debug if @debug
|
199
274
|
h[:url] = '#' + h[:title].strip.downcase.gsub(' ', '-')
|
200
|
-
|
275
|
+
|
201
276
|
end
|
202
277
|
puts ('doc.xml: ' + doc.xml.inspect) if @debug
|
203
|
-
|
278
|
+
|
204
279
|
@to_tree = doc.xml pretty: true
|
205
280
|
|
206
281
|
end
|
207
|
-
|
282
|
+
|
208
283
|
def make_tree(a, indent=0, hn=@hn)
|
209
|
-
|
284
|
+
|
210
285
|
if @debug then
|
211
|
-
puts 'inside make_tree'.debug
|
286
|
+
puts 'inside make_tree'.debug
|
212
287
|
puts ('a: ' + a.inspect).debug
|
213
288
|
end
|
214
|
-
|
289
|
+
|
215
290
|
a.map.with_index do |x, i|
|
216
|
-
|
291
|
+
|
217
292
|
puts ('x: ' + x.inspect).debug if @debug
|
218
|
-
|
293
|
+
|
219
294
|
if x.is_a? Array then
|
220
295
|
|
221
296
|
puts 'before make_tree()'.info if @debug
|
222
|
-
|
297
|
+
|
223
298
|
make_tree(x, indent+1, hn)
|
224
299
|
|
225
300
|
else
|
@@ -234,11 +309,11 @@ SIDEBAR_JS = TREE_JS
|
|
234
309
|
|
235
310
|
end.compact.join("\n")
|
236
311
|
|
237
|
-
end
|
312
|
+
end
|
238
313
|
|
239
314
|
def scan_headings(s, n=@hn)
|
240
|
-
|
241
|
-
s.split(/(?=<h#{n})/).map do |x|
|
315
|
+
|
316
|
+
s.split(/(?=<h#{n})/).map do |x|
|
242
317
|
x.include?('<h' + (n+1).to_s) ? scan_headings(x, n+1) : x
|
243
318
|
end
|
244
319
|
|
@@ -250,42 +325,42 @@ SIDEBAR_JS = TREE_JS
|
|
250
325
|
attr_reader :html, :css, :js
|
251
326
|
|
252
327
|
def initialize(unknown=nil, options={})
|
253
|
-
|
328
|
+
|
254
329
|
if unknown.is_a? String or unknown.is_a? Symbol then
|
255
330
|
type = unknown.to_sym
|
256
331
|
elsif unknown.is_a? Hash
|
257
332
|
options = {type: :tree}.merge(unknown)
|
258
333
|
type = options[:type]
|
259
334
|
end
|
260
|
-
|
335
|
+
|
261
336
|
@debug = options[:debug]
|
262
337
|
|
263
|
-
@types = %i(tree sidebar)
|
264
|
-
|
338
|
+
@types = %i(tree sidebar plain)
|
339
|
+
|
265
340
|
build(type, options) if type
|
266
341
|
|
267
342
|
end
|
268
|
-
|
343
|
+
|
269
344
|
def to_css()
|
270
345
|
@css
|
271
346
|
end
|
272
|
-
|
347
|
+
|
273
348
|
def to_html()
|
274
349
|
@html
|
275
350
|
end
|
276
|
-
|
351
|
+
|
277
352
|
def to_js()
|
278
353
|
@js
|
279
354
|
end
|
280
|
-
|
355
|
+
|
281
356
|
def to_ul()
|
282
357
|
@ul
|
283
358
|
end
|
284
|
-
|
359
|
+
|
285
360
|
def to_webpage()
|
286
361
|
|
287
362
|
a = RexleBuilder.build do |xml|
|
288
|
-
xml.html do
|
363
|
+
xml.html do
|
289
364
|
xml.head do
|
290
365
|
xml.meta name: "viewport", content: \
|
291
366
|
"width=device-width, initial-scale=1"
|
@@ -295,89 +370,111 @@ SIDEBAR_JS = TREE_JS
|
|
295
370
|
end
|
296
371
|
end
|
297
372
|
|
298
|
-
doc = Rexle.new(a)
|
299
|
-
|
373
|
+
doc = Rexle.new(a)
|
374
|
+
|
300
375
|
doc.root.element('body').add \
|
301
|
-
Rexle::Element.new('script').add_text "\n" +
|
376
|
+
Rexle::Element.new('script').add_text "\n" +
|
302
377
|
@js.gsub(/^ +\/\/[^\n]+\n/,'')
|
303
|
-
|
378
|
+
|
304
379
|
"<!DOCTYPE html>\n" + doc.xml(pretty: true, declaration: false)\
|
305
380
|
.gsub(/<\/div>/,'\0' + "\n").gsub(/\n *<!--[^>]+>/,'')
|
306
|
-
|
381
|
+
|
307
382
|
end
|
308
|
-
|
383
|
+
|
309
384
|
def to_xml()
|
310
385
|
@xml
|
311
386
|
end
|
312
|
-
|
313
|
-
|
387
|
+
|
388
|
+
|
314
389
|
private
|
315
|
-
|
390
|
+
|
316
391
|
def build(type, options)
|
317
|
-
|
392
|
+
|
318
393
|
puts 'inside build'.info if @debug
|
319
|
-
puts "type: %s\noptions: %s".debug % [type, options] if @debug
|
320
|
-
|
394
|
+
puts "type: %s\noptions: %s".debug % [type, options] if @debug
|
395
|
+
|
321
396
|
return unless @types.include? type.to_sym
|
322
|
-
|
397
|
+
|
323
398
|
s = method(type.to_sym).call(options)
|
324
|
-
|
399
|
+
|
325
400
|
@html = s.gsub(/<\/div>/,'\0' + "\n").strip.lines[1..-2]\
|
326
401
|
.map {|x| x.sub(/^ /,'') }.join
|
327
|
-
|
328
|
-
@css = Object.const_get '
|
329
|
-
@js = Object.const_get '
|
330
|
-
|
402
|
+
|
403
|
+
@css = Object.const_get self.class.to_s + '::' + type.to_s.upcase + '_CSS'
|
404
|
+
@js = Object.const_get self.class.to_s + '::' + type.to_s.upcase + '_JS'
|
405
|
+
|
331
406
|
end
|
332
|
-
|
407
|
+
|
333
408
|
def build_px(tree)
|
334
|
-
|
335
|
-
schema = 'entries/
|
409
|
+
|
410
|
+
schema = 'entries/link[title, url]'
|
336
411
|
xslt_schema = 'tree/item[@title:title, @url:url]'
|
337
412
|
|
338
413
|
# transform the tree xml into a polyrex document
|
339
414
|
pxsl = PolyrexXSLT.new(schema: schema, xslt_schema: xslt_schema).to_xslt
|
340
415
|
puts 'pxsl: ' + pxsl if @debug
|
341
|
-
Rexslt.new(pxsl, tree).to_s
|
342
|
-
|
416
|
+
Rexslt.new(pxsl, tree).to_s
|
417
|
+
|
343
418
|
end
|
344
|
-
|
345
|
-
|
346
|
-
def tree(opt={})
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
419
|
+
|
420
|
+
|
421
|
+
def tree(opt={}, xslt=XSLT)
|
422
|
+
|
423
|
+
puts 'inside tree' if @debug
|
424
|
+
|
425
|
+
raw_src = opt[:src]
|
426
|
+
|
427
|
+
px = if raw_src.is_a? String then
|
428
|
+
|
429
|
+
src, _ = RXFHelper.read raw_src
|
430
|
+
|
431
|
+
header = "<?polyrex schema='entries[title]/link[title,url]' \
|
432
|
+
delimiter=' # '?>\n\n"
|
433
|
+
|
434
|
+
s = if src =~ /<tree>/ then
|
435
|
+
|
436
|
+
build_px(src)
|
437
|
+
|
438
|
+
elsif src =~ /<\?polyrex-links\?>/
|
439
|
+
header + src.sub(/<\?polyrex-links\?>/,'').lstrip
|
440
|
+
elsif src =~ /<\?polyrex /
|
441
|
+
src
|
442
|
+
elsif src =~ /^#+/
|
443
|
+
build_px(TreeBuilder.new(src, hn: opt[:hn],debug: @debug).to_tree)
|
444
|
+
else
|
445
|
+
header + src.lstrip
|
446
|
+
end
|
447
|
+
|
448
|
+
puts ('s: ' + s.inspect).debug if @debug
|
449
|
+
Polyrex.new(s)
|
450
|
+
|
451
|
+
elsif raw_src.is_a?(Polyrex) # detects PolyrexLinks as Polyrex too
|
452
|
+
raw_src
|
361
453
|
end
|
362
|
-
|
363
|
-
puts ('s: ' + s.inspect).debug if @debug
|
364
|
-
px = Polyrex.new(s)
|
365
454
|
|
366
455
|
# transform the polyrex xml into a nested HTML list
|
367
456
|
#@ul = Rexslt.new(px.to_xml, XSLT).to_xml
|
368
457
|
puts ('px: ' + px.inspect).debug if @debug
|
369
458
|
puts ('px.to_xml: ' + px.to_xml.inspect).debug if @debug
|
459
|
+
|
370
460
|
doc = Nokogiri::XML(px.to_xml)
|
371
|
-
xslt = Nokogiri::XSLT(
|
461
|
+
xslt = Nokogiri::XSLT(xslt)
|
372
462
|
|
373
463
|
@ul = xslt.transform(doc).to_s.lines[1..-1].join
|
464
|
+
puts '@ul:' + @ul.inspect if @debug
|
465
|
+
|
466
|
+
return @ul
|
374
467
|
|
375
468
|
end
|
376
|
-
|
469
|
+
|
377
470
|
def sidebar(opt={})
|
378
471
|
doc = Rexle.new(tree(opt))
|
379
472
|
doc.root.attributes[:class] = 'sidenav'
|
380
473
|
@ul = doc.xml(declaration: false)
|
381
474
|
end
|
382
475
|
|
476
|
+
def plain(opt={})
|
477
|
+
tree opt, PLAIN
|
478
|
+
end
|
479
|
+
|
383
480
|
end
|
data.tar.gz.sig
CHANGED
Binary file
|
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.2
|
4
|
+
version: 0.3.2
|
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-12-28 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.12'
|
47
47
|
- - ">="
|
48
48
|
- !ruby/object:Gem::Version
|
49
|
-
version: 1.
|
49
|
+
version: 1.12.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.12'
|
57
57
|
- - ">="
|
58
58
|
- !ruby/object:Gem::Version
|
59
|
-
version: 1.
|
59
|
+
version: 1.12.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.4
|
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.4
|
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,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
143
143
|
- !ruby/object:Gem::Version
|
144
144
|
version: '0'
|
145
145
|
requirements: []
|
146
|
-
|
146
|
+
rubyforge_project:
|
147
|
+
rubygems_version: 2.7.10
|
147
148
|
signing_key:
|
148
149
|
specification_version: 4
|
149
150
|
summary: Generates an HTML tree from XML or Markdown.
|
metadata.gz.sig
CHANGED
Binary file
|