wiki_md 0.8.0 → 0.8.1

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: 148a00fe5a9fcef0a37edbcd2bc78ede1069dfce519deaa69768ee2c35afd011
4
- data.tar.gz: ab50dee21bfeb59cdc5f0405c920510dea75d985cac63a45d4677db70f6a619b
3
+ metadata.gz: 812073421ddfee0070fd6c340e54853949d4ba7cfbb5cd736a9b4ef54640efb1
4
+ data.tar.gz: bf512609589a4eb78fd2eeb9052fa4626052a4408621d32bd4417f9aaa461c31
5
5
  SHA512:
6
- metadata.gz: ea1a9af18ed278b4c3e963428c00a637a96058b80672b749a5b6f91a2c9694acc96a50b4802bd37d3c798793ac25e9da1fea724909bad0d731c062dca7e73e9f
7
- data.tar.gz: 7fe0eeb327e020b8bfa5a26b06fefe724c7ff2c1f2d5791a4ae9d411d15ab6727566baa1da3ee7cbadc52ba1f795c18eb490ef04ab291bf5f726121963b5b104
6
+ metadata.gz: d8c2045c900695dd6eb122e1e869b34d2dd27aa79d62b2f64f746c924c668914003e92d94d3218358f5af0f80cd951782514b4cde6ef9df829a773a08515b0e6
7
+ data.tar.gz: 0c34abcedaf88c4cc771f6f9e66019f9ac684bd095afb2c7560e2a2b02a2a953754da3d3334b614463967192e2a3c46be49c0ab204a7eebddb6c32660c12f49b
checksums.yaml.gz.sig CHANGED
Binary file
data/lib/wiki_md.rb CHANGED
@@ -68,7 +68,9 @@ class WikiMd
68
68
 
69
69
  if wiki then
70
70
 
71
+ puts 'before rxfhelper wiki: ' + wiki.inspect if @debug
71
72
  s, type = RXFHelper.read(wiki, auto: false)
73
+ puts 'after rxfhelper s: ' + s.inspect if @debug
72
74
 
73
75
  puts ('type: ' + type.inspect).debug if debug
74
76
 
@@ -107,8 +109,8 @@ class WikiMd
107
109
  raise WikiMdReadError, msg unless valid
108
110
 
109
111
  puts ('s: ' + s.inspect).debug if @debug
110
- @dxsx = DxSectionX.new s, debug: debug, autosave: true,
111
- order: @order
112
+
113
+ @dxsx = read_raw_document s
112
114
 
113
115
  @filepath = File.dirname @filename
114
116
 
@@ -120,7 +122,7 @@ class WikiMd
120
122
 
121
123
  else
122
124
 
123
- @dxsx = DxSectionX.new s, autosave: false, debug: @debug, order: @order
125
+ @dxsx = read_raw_document s
124
126
 
125
127
  end
126
128
 
@@ -195,7 +197,14 @@ class WikiMd
195
197
  end
196
198
 
197
199
  def entries()
198
- @dxsx.dx.all.map {|x| Entry.new(x)}
200
+
201
+ @dxsx.dx.all.map do |x|
202
+
203
+ puts 'x: ' + x.inspect if @debug
204
+ Entry.new(x)
205
+
206
+ end
207
+
199
208
  end
200
209
 
201
210
  def find(q, exact_match: false)
@@ -252,7 +261,7 @@ EOF
252
261
 
253
262
  end
254
263
 
255
- alias import new_md
264
+ alias import new_md
256
265
 
257
266
  def read_section(heading, exact_match: false)
258
267
 
@@ -331,7 +340,8 @@ EOF
331
340
 
332
341
  @filename = filename
333
342
  @filepath = File.dirname(@filename)
334
- FileX.write @filename=filename, @dxsx.to_s
343
+
344
+ FileX.write @filename=filename, dx_to_wmd(@dxsx.to_s)
335
345
 
336
346
  puts ('before @dxsx save').debug if @debug
337
347
  @dxsx.save filename.sub(/\.md$/, '.xml')
@@ -370,7 +380,7 @@ EOF
370
380
 
371
381
  e = Rexle::Element.new('panel')
372
382
  e.add_attribute(title: x.heading)
373
-
383
+ puts 'x.body: ' + x.body.inspect if @debug
374
384
  body = "<body>%s</body>" % Martile.new(x.body).to_html
375
385
  Rexle.new(body).root.elements.each {|element| e.add element }
376
386
 
@@ -395,10 +405,14 @@ EOF
395
405
  @dxsx.to_doc.xml(declaration: false, pretty: true)
396
406
  end
397
407
 
398
- def to_s()
408
+ def to_rawdx()
399
409
  @dxsx.to_s
400
410
  end
401
411
 
412
+ def to_s()
413
+ dx_to_wmd(@dxsx.to_dx)
414
+ end
415
+
402
416
  def to_toc()
403
417
  y = Yatoc.new(Kramdown::Document.new(self.to_sections).to_html)
404
418
  puts y.to_html
@@ -521,8 +535,19 @@ EOF
521
535
 
522
536
  end
523
537
 
538
+ def read_raw_document(s)
539
+
540
+ s2 = s.lines.first =~ /^<\?wikimd\b/ ? wmd_to_dx(s) : s
541
+
542
+ DxSectionX.new s2, debug: @debug, autosave: true,
543
+ order: @order
544
+
545
+ end
546
+
524
547
  def validate(s)
525
548
 
549
+ puts 'validate s:' + s.inspect if @debug
550
+
526
551
  a = s[/(?<=--#\n).*/m].split(/(?=\n# )/)
527
552
  valid = a.all? {|x| x.lines.last[0] == '+'}
528
553
  return true if valid
@@ -533,4 +558,86 @@ EOF
533
558
 
534
559
  [false, 'Tagline missing from heading # ' + heading]
535
560
  end
561
+
562
+ def wmd_to_dx(s)
563
+
564
+ puts 's: ' + s.inspect if @debug
565
+
566
+ header, body = s.split(/.*(?=^#)/,2)
567
+
568
+ puts 'body: ' + body.inspect if @debug
569
+
570
+ title = header[/title: +(.*)/,1]
571
+
572
+ raw_dx_header = "
573
+ <?dynarex schema='sections[title]/section(x)' format_mask='[!x]'?>
574
+ title: #{title}
575
+
576
+ --#\n\n"
577
+
578
+ puts 'raw_dx_header: ' + raw_dx_header.inspect if @debug#
579
+
580
+ rawdx = raw_dx_header + body
581
+ puts 'rawdx: ' + rawdx.inspect if @debug
582
+
583
+ dx = Dynarex.new(rawdx)
584
+
585
+ rows = dx.all.map do |record|
586
+
587
+ a = record.x.lines
588
+ puts 'a: ' + a.inspect if @debug
589
+
590
+ raw_heading = a.shift.chomp
591
+ puts 'raw_heading: ' + raw_heading.inspect if @debug
592
+ heading = raw_heading[/^#[^#]+/].rstrip
593
+
594
+ tags = raw_heading =~ /#/ ? raw_heading[/(?<=# ).*/].scan(/#(\w+)/).flatten : ''
595
+ puts ('tags: ' + tags.inspect).debug if @debug
596
+
597
+ if a.last =~ /^\+/ then
598
+
599
+ footer = a.pop
600
+ tags += footer[1..-1].strip.split
601
+
602
+ else
603
+
604
+ if tags.empty? then
605
+ tags = heading.downcase.gsub(/['\.\(\)]/,'').split
606
+ end
607
+
608
+ footer = '+ ' + tags.join(' ')
609
+
610
+ end
611
+
612
+ body = a.join.strip
613
+
614
+ [heading, body, footer].join("\n\n")
615
+
616
+ end
617
+
618
+ raw_dx_header + rows.join("\n\n")
619
+
620
+ end
621
+
622
+ def dx_to_wmd(dx)
623
+
624
+ rows = dx.all.map do |record|
625
+
626
+ a = record.x.lines
627
+
628
+ raw_heading = a.shift.chomp
629
+ footer = a.pop
630
+ body = a.join.strip
631
+
632
+ tags = footer[2..-1].split.map {|x| '#' + x }.join(' ')
633
+ heading = raw_heading + ' ' + tags
634
+
635
+ [heading, body].join("\n\n")
636
+
637
+ end
638
+
639
+ "<?wikimd version='1.0'?>
640
+ title: " + dx.title + "\n\n" + rows.join("\n\n")
641
+
642
+ end
536
643
  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.8.0
4
+ version: 0.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -35,7 +35,7 @@ cert_chain:
35
35
  N5hZmnA6M2h3NysLCPRtwS2vMJh8qq6OS5RjU9cc5V08vyIkQ7/YC/x+7kLm5Kn0
36
36
  kvoWXxa8gpUBS+qMlSYFDHlq
37
37
  -----END CERTIFICATE-----
38
- date: 2020-01-21 00:00:00.000000000 Z
38
+ date: 2020-01-24 00:00:00.000000000 Z
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: dxsectionx
metadata.gz.sig CHANGED
Binary file