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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9c53d6f13015d4111456cd44041c1571be3f036de31204be792ef4910b383498
4
- data.tar.gz: 466327ecc28f9351c938daf50dd94f752a3343d5bab6bed1f3b4504346240974
3
+ metadata.gz: fa844d152f822a43de4979ae351e7fa30a9adbd35ae6f18cf07a6824f5da74a3
4
+ data.tar.gz: 91928df4b49e8f62a26ed9529c602300324df0059c2e93da9c54e6d6e77f6c12
5
5
  SHA512:
6
- metadata.gz: d933e440deb0da166ad55f54e83f53891c27d42ac50a9fffb5be7f423f67ed49d74a4e0728d1695e7fd2ea6774d0837953fcd1173ebe51e3c8429549e25905ae
7
- data.tar.gz: 5cb17771b5b9fc6fbec30edeb20e00caf6c48678b1b9600664fef97e605a1a41f2062e39e177027f4785af3d02c8ee05c43bff9d7b887961d0db1b2dad41bc54
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/entry' />
19
+ <xsl:apply-templates select='records/link' />
21
20
  </xsl:element>
22
21
 
23
22
  </xsl:template>
24
23
 
25
- <xsl:template match='entry'>
24
+ <xsl:template match='link'>
26
25
 
27
26
  <xsl:choose>
28
- <xsl:when test='records/entry'>
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/entry' />
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 'JsTreeBuilder::' + type.to_s.upcase + '_CSS'
329
- @js = Object.const_get 'JsTreeBuilder::' + type.to_s.upcase + '_JS'
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/entry[title, url]'
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
- src = opt[:src]
349
-
350
- s = if src =~ /<tree>/ then
351
-
352
- build_px(src)
353
-
354
- elsif src =~ /<?polyrex /
355
- src
356
- elsif src =~ /^#+/
357
- build_px(TreeBuilder.new(src, hn: opt[:hn],debug: @debug).to_tree)
358
- else
359
- "<?polyrex schema='entries[title]/entry[title,url]' \
360
- delimiter=' # '?>\n\n" + src.lstrip
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(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.3
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
- YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMTkwODA1MjExNDQ4WhcN
15
- MjAwODA0MjExNDQ4WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
- cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQCxe/SK
17
- P63fEkWwc5zLyS7cQUh1CpPliXajuIL1pUxMyF0FBxs+GId3IZhCF8/3+RMVnz/e
18
- Gs0J9nDBrCctAHSi6VsjFocmiXqu96sx9Fxfs5wTqyT4fD22LoTBNVUZ0pZfxaBm
19
- G6ztBF1dmnrmsSCtLnqioX2rQFyrbIty+y0GkKGbqiV2CMKheQXvfg/4TOElklND
20
- jGe1sMwfvOKKR0Xrwfp6V/AU4ecf9jLqVttS+cPspdDowzhDrHmWBGhIEo0ccRXb
21
- OpTN30OrA+q/WVZBUIiySYcpW1W8JJFhLDi0WMfoPoQ5C2D91adRaQKHwZT4iDen
22
- usRE9oHWuebCV8wW/I2MqexyBrbDu2k9qQryhufDxeRZT1dbx7meNPSHQ1Ktm21D
23
- qOOPYpl7OlSr+UP7NwPBWxXB3jLxhe5onyIXKTP/vUQ19Swo2Kx2YJyWpOfrNOOA
24
- ODSx83g/N/FdgI+dUkAPvtefU9+IQuCRWsQAk1XycafEFcTkNVD5D0Hqp6sCAwEA
25
- AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQU54E03Y+Y
26
- 1F5Sszs2IG3vqhesBXYwJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
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
- BgkqhkiG9w0BAQsFAAOCAYEAW1T6VR0ML0Xu0ryrjPVwPa3x5h2tj/YcHEmWDre+
29
- 7nN5I8Rrgg76JYkjBWIf3Dr2WYPsga4w5NK0wPScphv5U9cwfIA5r0gFroflcug+
30
- DlC5yiNmOyih46eCeoLfyzmIORM0Ejn0Vq2pqcyEW+vEUB1EFvqMKgfcdRfplKil
31
- qT2TvvEPSatX8dBwGXEEE03ID2NA4xU/fXEfLu22zO1aMKuwSNJm1wnJAcErkVnF
32
- ddfalc7UNj3/gt2eE3EZo1x1U7Gbnwzix6AU2XFAzjMhlVgg+iCW4ie2tkaEF52z
33
- 3JGvpw6sa5K3VjrnW146I3D1yhCuCToLwLZ4evDjS9HWifxzwWBQmAMhvZf4YOCv
34
- uBJ1bPJvkq1hhYuPfw6FEXgyodyKcU98x77XUgJk7leb6jN1nXiWx5Ox1/TQL8WX
35
- /YHvF368/KpwUw6rBLVUbFvCsNvDTe+bPAG72P5om2g/aope7mb9Qc4kATQgWiys
36
- rqRI7UAQ3N9ojGSXl6KSySfi
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: 2020-02-29 00:00:00.000000000 Z
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.10'
46
+ version: '1.12'
47
47
  - - ">="
48
48
  - !ruby/object:Gem::Version
49
- version: 1.10.4
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.10'
56
+ version: '1.12'
57
57
  - - ">="
58
58
  - !ruby/object:Gem::Version
59
- version: 1.10.4
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.1'
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.1'
116
+ version: '2.3'
117
+ - - ">="
118
+ - !ruby/object:Gem::Version
119
+ version: 2.3.1
120
120
  description:
121
- email: james@jamesrobertson.eu
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
- rubygems_version: 3.0.3
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