wiki_md 0.7.8 → 0.8.0

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: 78e50d1a9dd8054d0211a9b8f95813e2bdf86a2e0f9adaa76265ae1c4b27d82d
4
- data.tar.gz: d9eef53c6d9aabb36a31d25347d0db530f769e022f1fd22c5ba2965ff02ff29b
3
+ metadata.gz: 148a00fe5a9fcef0a37edbcd2bc78ede1069dfce519deaa69768ee2c35afd011
4
+ data.tar.gz: ab50dee21bfeb59cdc5f0405c920510dea75d985cac63a45d4677db70f6a619b
5
5
  SHA512:
6
- metadata.gz: 605cb7e3c00af73a846ac9cc074c36affde8bca96313cd4dadacda4ec356aa21f4198fc2292f5a2378c9abb4eb0d71bc242b59ce3c80376acac1e9fa9cd2d7c1
7
- data.tar.gz: 82f1d25062b6177ff301b7070d7fdc7d3bfb160dd9ad7b364c50a751713992686a581156afc9bda9b7817351e881a4afc22499e66f68e33c227ea2037856342c
6
+ metadata.gz: ea1a9af18ed278b4c3e963428c00a637a96058b80672b749a5b6f91a2c9694acc96a50b4802bd37d3c798793ac25e9da1fea724909bad0d731c062dca7e73e9f
7
+ data.tar.gz: 7fe0eeb327e020b8bfa5a26b06fefe724c7ff2c1f2d5791a4ae9d411d15ab6727566baa1da3ee7cbadc52ba1f795c18eb490ef04ab291bf5f726121963b5b104
checksums.yaml.gz.sig CHANGED
Binary file
data/lib/wiki_md.rb CHANGED
@@ -6,6 +6,9 @@ require 'dxsectionx'
6
6
  require 'dynarex-tags'
7
7
 
8
8
 
9
+ class WikiMdReadError < Exception
10
+ end
11
+
9
12
  class WikiMd
10
13
  include RXFHelperModule
11
14
  using ColouredText
@@ -99,6 +102,9 @@ class WikiMd
99
102
  elsif type == :file or type == :dfs
100
103
 
101
104
  @filename = wiki
105
+
106
+ valid, msg = validate s
107
+ raise WikiMdReadError, msg unless valid
102
108
 
103
109
  puts ('s: ' + s.inspect).debug if @debug
104
110
  @dxsx = DxSectionX.new s, debug: debug, autosave: true,
@@ -331,7 +337,13 @@ EOF
331
337
  @dxsx.save filename.sub(/\.md$/, '.xml')
332
338
  @dx = new_index(File.join(@filepath, 'index.xml')) unless @dx
333
339
 
334
- end
340
+ end
341
+
342
+ def sort!()
343
+ @dxsx.dx.sort_by! do |rec|
344
+ rec.element('x').value.lines.first.chomp[/(?<=^# ).*/]
345
+ end
346
+ end
335
347
 
336
348
  def title()
337
349
  @dxsx.dx.title()
@@ -344,12 +356,35 @@ EOF
344
356
  def to_aztoc(base_url: '')
345
357
  Yatoc.new(self.entries.map(&:to_s).join).to_aztoc.gsub(/(?<=href=')([^']+)/, base_url + '\1')
346
358
  end
359
+
360
+ # generates an accordion menu in XML format. It can be rendered to
361
+ # HTML using the Martile gem
362
+ #
363
+ def to_accordion()
364
+
365
+ doc = Rexle.new('<accordion/>')
366
+
367
+ sort!()
368
+
369
+ entries.each do |x|
370
+
371
+ e = Rexle::Element.new('panel')
372
+ e.add_attribute(title: x.heading)
373
+
374
+ body = "<body>%s</body>" % Martile.new(x.body).to_html
375
+ Rexle.new(body).root.elements.each {|element| e.add element }
376
+
377
+ doc.root.add e
378
+
379
+ end
380
+
381
+ doc.root.xml pretty: true
382
+
383
+ end
347
384
 
348
385
  def to_sections()
349
386
 
350
- @dxsx.dx.sort_by! do |rec|
351
- rec.element('x').value.lines.first.chomp[/(?<=^# ).*/]
352
- end
387
+ sort!()
353
388
 
354
389
  @dxsx.to_doc.root.xpath('records/section')\
355
390
  .map {|x| x.xml(pretty: true)}.join("\n")
@@ -485,4 +520,17 @@ EOF
485
520
  dx
486
521
 
487
522
  end
523
+
524
+ def validate(s)
525
+
526
+ a = s[/(?<=--#\n).*/m].split(/(?=\n# )/)
527
+ valid = a.all? {|x| x.lines.last[0] == '+'}
528
+ return true if valid
529
+
530
+ r = a.detect {|x| x.lines.last[0] != '+'}
531
+
532
+ heading = r[/(?<=# ).*/]
533
+
534
+ [false, 'Tagline missing from heading # ' + heading]
535
+ end
488
536
  end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wiki_md
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.8
4
+ version: 0.8.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
- YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMTgwOTE1MTg0NDMwWhcN
15
- MTkwOTE1MTg0NDMwWjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
- cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDPXxC/
17
- rMAwO24yY94T4JLT3R+znJABZWAW1RiOi3YmNzRvm6G1IRjIh1t+TqHpzjL0tJF9
18
- LKjFRC8yQJrWI/Vv0T/UbdCmScAf+xCDwh2h8nDGcdv+w2rop05ejQk+KmInhFSh
19
- xTD5NnY1V541dwK/a0tmrBO+qO8BDuZlfsnPr0v8uQ76BzB3iKmW3+EYuP/Zrgzc
20
- ezju4kZwFLkBLdcFUT0LKTgVGoK8B4RjBxTTtbjxr6qpbTZv3ysb0BEiXTYx6kAh
21
- 8NSf9iWlSDBNZ7HaTF9+brbvKJnwJgbG1HSa587S5KYcmfCUkYBdahFLN+eTMJYO
22
- 3RxG/f+OITTd/TdgKTrDJfODJpM4uOHWeYExQmdLTvDFsyU0JEqnIxI9XtBmCRkc
23
- xyvH41u9siBzLgmMwQDXeQLMLipXvQD8fG43E/reH4lQG6PYS9ik+Ly8lwTNNUYI
24
- /t7pt/vtPgNpUovrzKasCWLoSplqSiBQ9zF1tMDfyrKZENHaNiAAPdq1CjMCAwEA
25
- AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUhzQNrQMt
26
- GIqVJc3cOBE0wKNhGx4wJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
14
+ YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjAwMTIxMjMxNTI0WhcN
15
+ MjEwMTIwMjMxNTI0WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
+ cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQC4Ru7o
17
+ KHnj/uJU7F5Xbp5yPX2YgOohtrEf06+HIdWoYWo0+ThvAuh07+HrmGytjrzxP8wv
18
+ kA9m8tp7Gw92k1aPL60Jwbq1Dpjb68xVh1c4cnTPd5oip6MyVwPQnvSzwNpVZBHj
19
+ fPYHtEnzzSyGLQbhX0nB4ZqguSQBIpo+2n1DdG59ub2j4kJreghEsZfUKgdiSsEh
20
+ Kfk7+ZMq3wd0biOV8yO8pBNthqKcj4VKY1Zi63Dt0jqHImOXXAIuOTxoUpMeZGbL
21
+ N87LZRQu8/Wrj9M6OQu8rS1qV1+tSzPhdovBK/Z+nFuDvtr6WbyDst/RHr0y42mu
22
+ XzSexab8CwuLhfi7WvEnoYoOxBVDlS85OaFIEBbLHb/DqXEluzpGwWOKJ3Y06uF0
23
+ I/ucQCOPOV3lmgyLPfYsf8lB/qxJ+ovHFaxhsoK4wbofWPEknv2bYQ4XzBxSdgIZ
24
+ tjsyN0nwfgftpj9VUj9T9To5nvEHLYYk00zYxJaGn4+vDk90/aTk69abDeUCAwEA
25
+ AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUIe+GCuMp
26
+ s6MGlmJRJw9yMMVqzAQwJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
27
27
  c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
28
- BgkqhkiG9w0BAQsFAAOCAYEAnOv8IWAUOwRZHsA3oogowopfrsem12UhwwbMTZTy
29
- 0Apo1L92KobglMlZrVRIz4DRJu6TanMJdTJMByrHo1xGD5p5H3XpGpOj2Xxz0AYa
30
- IUbVAOmUDy84vBIcdsKs2Kvy0YRRgCTWLZxuz0C5aa9TiTKTCRpgo0UE9rhif+WR
31
- gCEmysM3199yhFFurjRulaZuJwkQAznRByquUsvePnMjxXjLK2HpX1HU/6o14pu3
32
- qWoZKECwLdShjxT25j1mLVg9hNwC75Vn6OhEMXl3dOqplg4DPVcbrL9pbDR5MBu7
33
- jmNqGmQZkCvwUb4emxNDvuaaPomy+C1cu3rgVUdQNPd/WyWHIuf1maZhIDWTJalY
34
- tjb0N9prw0HZTv/h2eextC0wHlmDwcyYdPhuFzeeunAI/e+F4FtDFJhgd8vrp5fJ
35
- nEQURKgvgTAqVg9tuqcjEE861mSCPc+12rmUHVBZDxMDQF6CQbnOxrYRIS+7fnia
36
- kikBQtN17cUMyGOrZTVRhVGR
28
+ BgkqhkiG9w0BAQsFAAOCAYEAkJSE2shCsfjnUSnopr7iNTU9V8uuw3MZtOmRFS2K
29
+ ca2afbjPRPZjDSElwU9UfTQd6tJRaXNoaBcmrokxzg+qkbi8YinMg+ULuNb5K+Wq
30
+ TovMj1i7h1ORBTVcu7vWnuycXWCj4jNo0HrquxwvEBcSOwcLP3evJ+EZlJ+YEaxI
31
+ qRiNtkk4g29oPBUtNh/bEmuysSe+eh7Rv+hAN6jeor3Eoc/rgKCiJvNPbP/NTIY0
32
+ So08bfqBUrPqn/wzT8W6KLfAlCzlT7Pfj5Qq5O7wSmPZSYD66Ossm0wC5Uhg/fi4
33
+ Rxh5s0z+KhRLZ/Nk9rOtjMtflV1OHvabvyamw0p6a8cNmb1N1pV/RHULjPEyHJc9
34
+ 3f6jP2IUfB7et2sBm/gB9ZnoZubDoHvy0Sws8qTfQ116vgW9vr2hH4XGB0s9uWiA
35
+ N5hZmnA6M2h3NysLCPRtwS2vMJh8qq6OS5RjU9cc5V08vyIkQ7/YC/x+7kLm5Kn0
36
+ kvoWXxa8gpUBS+qMlSYFDHlq
37
37
  -----END CERTIFICATE-----
38
- date: 2019-02-03 00:00:00.000000000 Z
38
+ date: 2020-01-21 00:00:00.000000000 Z
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: dxsectionx
@@ -46,7 +46,7 @@ dependencies:
46
46
  version: '0.3'
47
47
  - - ">="
48
48
  - !ruby/object:Gem::Version
49
- version: 0.3.1
49
+ version: 0.3.2
50
50
  type: :runtime
51
51
  prerelease: false
52
52
  version_requirements: !ruby/object:Gem::Requirement
@@ -56,7 +56,7 @@ dependencies:
56
56
  version: '0.3'
57
57
  - - ">="
58
58
  - !ruby/object:Gem::Version
59
- version: 0.3.1
59
+ version: 0.3.2
60
60
  - !ruby/object:Gem::Dependency
61
61
  name: dynarex-tags
62
62
  requirement: !ruby/object:Gem::Requirement
@@ -103,7 +103,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
103
103
  - !ruby/object:Gem::Version
104
104
  version: '0'
105
105
  requirements: []
106
- rubygems_version: 3.0.2
106
+ rubygems_version: 3.0.3
107
107
  signing_key:
108
108
  specification_version: 4
109
109
  summary: 'Designed for maintaining many wiki entries within a single document in Markdown
metadata.gz.sig CHANGED
Binary file