jstreebuilder 0.2.3 → 0.3.2
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/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
|