mdless 2.0.5 → 2.0.6
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
- data/lib/mdless/console.rb +101 -6
- data/lib/mdless/converter.rb +11 -3
- data/lib/mdless/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2153423a3c896ca8522fd330478ce3125fd68a2bcc6a8a4c52b0efea31033484
|
4
|
+
data.tar.gz: 4b039579d2315650038408b954d00689929530c322441aacca52c13e77f4065f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 40fbf0a45ede5519964948b6fc83b1f2f7dd6beea06f2faec2be9b8606d1bfe8d1f176597e49a318a205cae66b1ad855afc0951ec29f0e39f6f662d34535c816
|
7
|
+
data.tar.gz: c2adc031a649dfbc3cfd4254df7acfb990f2b86a31bea7f4d58405a7c2853122431b5057dfe5cd225b6510e206a45b2b999f10a372f00e6128b74cce66cf6978
|
data/lib/mdless/console.rb
CHANGED
@@ -9,6 +9,8 @@ module Redcarpet
|
|
9
9
|
@@listid = 0
|
10
10
|
@@footnotes = []
|
11
11
|
@@headers = []
|
12
|
+
@@links = []
|
13
|
+
@@footer_links = []
|
12
14
|
|
13
15
|
def xc
|
14
16
|
x + color('text')
|
@@ -393,11 +395,11 @@ module Redcarpet
|
|
393
395
|
end
|
394
396
|
end
|
395
397
|
|
396
|
-
def linebreak
|
397
|
-
"\n"
|
398
|
+
def linebreak
|
399
|
+
" \n"
|
398
400
|
end
|
399
401
|
|
400
|
-
def
|
402
|
+
def color_link(link, title, content)
|
401
403
|
[
|
402
404
|
color('link brackets'),
|
403
405
|
'[',
|
@@ -414,6 +416,50 @@ module Redcarpet
|
|
414
416
|
].join
|
415
417
|
end
|
416
418
|
|
419
|
+
def color_link_reference(link, idx, content)
|
420
|
+
[
|
421
|
+
color('link brackets'),
|
422
|
+
'[',
|
423
|
+
color('link text'),
|
424
|
+
content,
|
425
|
+
color('link brackets'),
|
426
|
+
'][',
|
427
|
+
color('link url'),
|
428
|
+
idx,
|
429
|
+
color('link brackets'),
|
430
|
+
']',
|
431
|
+
xc
|
432
|
+
].join
|
433
|
+
end
|
434
|
+
|
435
|
+
def color_reference_link(link, title, content)
|
436
|
+
[
|
437
|
+
color('link brackets'),
|
438
|
+
'[',
|
439
|
+
color('link text'),
|
440
|
+
content,
|
441
|
+
color('link brackets'),
|
442
|
+
']:',
|
443
|
+
color('text'),
|
444
|
+
' ',
|
445
|
+
color('link url'),
|
446
|
+
link,
|
447
|
+
title.nil? ? '' : %( "#{title}"),
|
448
|
+
xc
|
449
|
+
].join
|
450
|
+
end
|
451
|
+
|
452
|
+
def link(link, title, content)
|
453
|
+
res = color_link(link, title, content)
|
454
|
+
@@links << {
|
455
|
+
link: res,
|
456
|
+
url: link,
|
457
|
+
title: title,
|
458
|
+
content: content
|
459
|
+
}
|
460
|
+
res
|
461
|
+
end
|
462
|
+
|
417
463
|
def color_tags(html)
|
418
464
|
html.gsub(%r{(<\S+( .*?)?/?>)}, "#{color('html brackets')}\\1#{xc}")
|
419
465
|
end
|
@@ -538,13 +584,13 @@ module Redcarpet
|
|
538
584
|
longest = longest < @cols ? longest + 1 : @cols
|
539
585
|
lines.map do |line|
|
540
586
|
if line =~ /^[-.]{3}\s*$/
|
541
|
-
line = "#{color('metadata marker')}#{'%' * longest
|
587
|
+
line = "#{color('metadata marker')}#{'%' * longest}"
|
542
588
|
else
|
543
589
|
line.sub!(/^(.*?:)[ \t]+(\S)/, '\1 \2')
|
544
590
|
line = "#{color('metadata color')}#{line}"
|
545
591
|
end
|
546
592
|
|
547
|
-
line +=
|
593
|
+
line += "\u00A0" * (longest - line.uncolor.strip.length) + xc
|
548
594
|
line
|
549
595
|
end.join("\n") + "#{xc}\n"
|
550
596
|
end
|
@@ -559,7 +605,7 @@ module Redcarpet
|
|
559
605
|
lines.map do |line|
|
560
606
|
line.sub!(/^(.*?:)[ \t]+(\S)/, '\1 \2')
|
561
607
|
line = "#{color('metadata color')}#{line}"
|
562
|
-
line += "\u00A0" * (longest - line.uncolor.strip.length
|
608
|
+
line += "\u00A0" * (longest - line.uncolor.strip.length)
|
563
609
|
line + xc
|
564
610
|
end.join("\n") + "#{"\u00A0" * longest}#{xc}\n"
|
565
611
|
end
|
@@ -626,6 +672,51 @@ module Redcarpet
|
|
626
672
|
end
|
627
673
|
end
|
628
674
|
|
675
|
+
def color_links(input)
|
676
|
+
input.gsub(/(?mi)(?<!\\e)\[(?<text>[^\[]+)\]\((?<url>\S+)(?: +"(?<title>.*?)")?\)/) do
|
677
|
+
m = Regexp.last_match
|
678
|
+
color_link(m['url'].uncolor, m['title']&.uncolor, m['text'].uncolor)
|
679
|
+
end
|
680
|
+
end
|
681
|
+
|
682
|
+
def reference_links(input)
|
683
|
+
grafs = input.split(/\n{2,}/)
|
684
|
+
counter = 1
|
685
|
+
|
686
|
+
grafs.map! do |graf|
|
687
|
+
next if graf =~ /^$/
|
688
|
+
|
689
|
+
links_added = false
|
690
|
+
|
691
|
+
@@links.each do |link|
|
692
|
+
if graf =~ /#{Regexp.escape(link[:link])}/
|
693
|
+
url = link[:url].uncolor
|
694
|
+
content = link[:content]
|
695
|
+
title = link[:title]&.uncolor
|
696
|
+
graf.gsub!(/#{Regexp.escape(link[:link])}/, color_link_reference(url, counter, content))
|
697
|
+
if @options[:links] == :paragraph
|
698
|
+
if links_added
|
699
|
+
graf += "\n#{color_reference_link(url, title, counter)}"
|
700
|
+
else
|
701
|
+
graf = "#{graf}\n\n#{color_reference_link(url, title, counter)}"
|
702
|
+
links_added = true
|
703
|
+
end
|
704
|
+
else
|
705
|
+
@@footer_links << color_reference_link(url, title, counter)
|
706
|
+
end
|
707
|
+
counter += 1
|
708
|
+
end
|
709
|
+
end
|
710
|
+
"\n#{graf}\n"
|
711
|
+
end
|
712
|
+
|
713
|
+
if @options[:links] == :paragraph
|
714
|
+
grafs.join("\n")
|
715
|
+
else
|
716
|
+
grafs.join("\n") + "\n#{@@footer_links.join("\n")}\n"
|
717
|
+
end
|
718
|
+
end
|
719
|
+
|
629
720
|
def postprocess(input)
|
630
721
|
if @options[:inline_footnotes]
|
631
722
|
input = insert_footnotes(input)
|
@@ -653,6 +744,10 @@ module Redcarpet
|
|
653
744
|
end
|
654
745
|
# misc html
|
655
746
|
input.gsub!(%r{<br */?>}, "\n")
|
747
|
+
# format links
|
748
|
+
if @options[:links] == :reference || @options[:links] == :paragraph
|
749
|
+
input = reference_links(input)
|
750
|
+
end
|
656
751
|
# lists
|
657
752
|
fix_lists(input, 0)
|
658
753
|
end
|
data/lib/mdless/converter.rb
CHANGED
@@ -73,8 +73,15 @@ module CLIMarkdown
|
|
73
73
|
|
74
74
|
@options[:links] ||= :inline
|
75
75
|
opts.on('--links=FORMAT',
|
76
|
-
'Link style ([inline, reference], default inline
|
77
|
-
@options[:links] =
|
76
|
+
'Link style ([inline, reference, paragraph], default inline, "paragraph" will position reference links after each paragraph)') do |fmt|
|
77
|
+
@options[:links] = case fmt
|
78
|
+
when /^:?r/i
|
79
|
+
:reference
|
80
|
+
when /^:?p/i
|
81
|
+
:paragraph
|
82
|
+
else
|
83
|
+
:inline
|
84
|
+
end
|
78
85
|
end
|
79
86
|
|
80
87
|
@options[:list] ||= false
|
@@ -275,6 +282,7 @@ module CLIMarkdown
|
|
275
282
|
@headers = get_headers(input)
|
276
283
|
last_level = 0
|
277
284
|
headers_out = []
|
285
|
+
len = (@headers.count + 1).to_s.length
|
278
286
|
@headers.each_with_index do |h, idx|
|
279
287
|
level = h[0].length - 1
|
280
288
|
title = h[1]
|
@@ -295,7 +303,7 @@ module CLIMarkdown
|
|
295
303
|
else
|
296
304
|
' '
|
297
305
|
end
|
298
|
-
headers_out.push format(
|
306
|
+
headers_out.push format("%<d>#{len}d: %<s>s",
|
299
307
|
d: idx + 1,
|
300
308
|
s: "#{c(%i[x black])}#{'.' * level}#{c(%i[x yellow])}#{subdoc}#{title.strip}#{xc}")
|
301
309
|
end
|
data/lib/mdless/version.rb
CHANGED