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 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