mdless 1.0.32 → 1.0.33

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: fa89ffe14d9828b457116dde396a11bde06bbe58a258f721b5d0c0d2e5d381bf
4
- data.tar.gz: 2b12d4353cf2f836b0dea6491f7671fae7d269e8b3617cfc92ba8f90e58da0ce
3
+ metadata.gz: 124d704b9e69d3c7afbba30442cc2e3f3b9ebd92edc16b345c3a5489b64a5823
4
+ data.tar.gz: 0e257d07a7c684441140ad2d526711c41127f97af37ae798311d9f04e5f832fd
5
5
  SHA512:
6
- metadata.gz: 47a0731cd6e4a7febf475f253406938726deebb1e1cbb5808e2048789ab5f695ba9e234656ce40316978eb12e7da2d08b4bed3b42d27614a89fd8ed2ceffa725
7
- data.tar.gz: 9d74ae761471b840e816e4b15ceb81697bbccdf7331d5431a0845727599967383c361c890008bc795312f91374f243a0f6696b953e6c38b197377913a64b6b86
6
+ metadata.gz: 621d98dd881546000fdff38ad51e691d1c729fce4a87f96dc19b5041b9fefefd826245ed9b865db272165b591a0d300b6d1c5dca71d2612b611bc9549dce3181
7
+ data.tar.gz: 33287f2fd78bdc15fd9bc15003a30df2396688475864063e012d96418c8e390a2c2e6c67c746831608a40e4bea0ee594540e209dbcc6806d3e7950c870406785
@@ -22,11 +22,11 @@ module CLIMarkdown
22
22
  opts.banner = "#{version} by Brett Terpstra\n\n> Usage: #{CLIMarkdown::EXECUTABLE_NAME} [options] [path]\n\n"
23
23
 
24
24
  @options[:color] = true
25
- opts.on( '-c', '--[no-]color', 'Colorize output (default on)' ) do |c|
25
+ opts.on('-c', '--[no-]color', 'Colorize output (default on)') do |c|
26
26
  @options[:color] = c
27
27
  end
28
28
 
29
- opts.on( '-d', '--debug LEVEL', 'Level of debug messages to output' ) do |level|
29
+ opts.on('-d', '--debug LEVEL', 'Level of debug messages to output') do |level|
30
30
  if level.to_i > 0 && level.to_i < 5
31
31
  @log.level = 5 - level.to_i
32
32
  else
@@ -35,7 +35,7 @@ module CLIMarkdown
35
35
  end
36
36
  end
37
37
 
38
- opts.on( '-h', '--help', 'Display this screen' ) do
38
+ opts.on('-h', '--help', 'Display this screen') do
39
39
  puts opts
40
40
  exit
41
41
  end
@@ -54,8 +54,8 @@ module CLIMarkdown
54
54
  end
55
55
  end
56
56
  end
57
- opts.on('-I', '--all-images', 'Include local and remote images in output (requires imgcat or chafa)' ) do
58
- if exec_available('imgcat') || exec_available('chafa')# && ENV['TERM_PROGRAM'] == 'iTerm.app'
57
+ opts.on('-I', '--all-images', 'Include local and remote images in output (requires imgcat or chafa)') do
58
+ if exec_available('imgcat') || exec_available('chafa') # && ENV['TERM_PROGRAM'] == 'iTerm.app'
59
59
  @options[:local_images] = true
60
60
  @options[:remote_images] = true
61
61
  else
@@ -64,51 +64,51 @@ module CLIMarkdown
64
64
  end
65
65
 
66
66
  @options[:links] = :inline
67
- opts.on( '--links=FORMAT', 'Link style ([inline, reference], default inline) [NOT CURRENTLY IMPLEMENTED]' ) do |format|
67
+ opts.on('--links=FORMAT', 'Link style ([inline, reference], default inline) [NOT CURRENTLY IMPLEMENTED]') do |format|
68
68
  if format =~ /^r/i
69
69
  @options[:links] = :reference
70
70
  end
71
71
  end
72
72
 
73
73
  @options[:list] = false
74
- opts.on( '-l', '--list', 'List headers in document and exit' ) do
74
+ opts.on('-l', '--list', 'List headers in document and exit' ) do
75
75
  @options[:list] = true
76
76
  end
77
77
 
78
78
  @options[:pager] = true
79
- opts.on( '-p', '--[no-]pager', 'Formatted output to pager (default on)' ) do |p|
79
+ opts.on('-p', '--[no-]pager', 'Formatted output to pager (default on)') do |p|
80
80
  @options[:pager] = p
81
81
  end
82
82
 
83
- opts.on( '-P', 'Disable pager (same as --no-pager)' ) do
83
+ opts.on('-P', 'Disable pager (same as --no-pager)') do
84
84
  @options[:pager] = false
85
85
  end
86
86
 
87
87
  @options[:section] = nil
88
- opts.on( '-s', '--section=NUMBER', 'Output only a headline-based section of the input (numeric from --list)' ) do |section|
89
- @options[:section] = section.to_i
88
+ opts.on('-s', '--section=NUMBER[,NUMBER]', 'Output only a headline-based section of the input (numeric from --list)') do |section|
89
+ @options[:section] = section.split(/ *, */).map(&:strip).map(&:to_i)
90
90
  end
91
91
 
92
92
  @options[:theme] = 'default'
93
- opts.on( '-t', '--theme=THEME_NAME', 'Specify an alternate color theme to load' ) do |theme|
93
+ opts.on('-t', '--theme=THEME_NAME', 'Specify an alternate color theme to load') do |theme|
94
94
  @options[:theme] = theme
95
95
  end
96
96
 
97
- opts.on( '-v', '--version', 'Display version number' ) do
97
+ opts.on('-v', '--version', 'Display version number') do
98
98
  puts version
99
99
  exit
100
100
  end
101
101
 
102
- @options[:width] = %x{tput cols}.strip.to_i
103
- opts.on( '-w', '--width=COLUMNS', 'Column width to format for (default terminal width)' ) do |columns|
102
+ @options[:width] = `tput cols`.strip.to_i
103
+ opts.on('-w', '--width=COLUMNS', 'Column width to format for (default: terminal width)') do |columns|
104
104
  @options[:width] = columns.to_i
105
105
  end
106
106
  end
107
107
 
108
108
  begin
109
109
  optparse.parse!
110
- rescue OptionParser::ParseError => pe
111
- $stderr.puts "error: #{pe.message}"
110
+ rescue OptionParser::ParseError => e
111
+ warn "error: #{e.message}"
112
112
  exit 1
113
113
  end
114
114
 
@@ -122,7 +122,7 @@ module CLIMarkdown
122
122
  @ref_links = {}
123
123
  @footnotes = {}
124
124
 
125
- if args.length > 0
125
+ if !args.empty?
126
126
  files = args.delete_if { |f| !File.exist?(f) }
127
127
  files.each do |file|
128
128
  @log.info(%(Processing "#{file}"))
@@ -488,6 +488,10 @@ module CLIMarkdown
488
488
  end
489
489
 
490
490
  def convert_markdown(input)
491
+ ## Replace setex headers with ATX
492
+ input.gsub!(/^([^\n]+)\n={3,}\s*$/m, "# \\1\n")
493
+ input.gsub!(/^([^\n]+?)\n-{3,}\s*$/m, "## \\1\n")
494
+
491
495
  @headers = get_headers(input)
492
496
  input += "\n\n@@@"
493
497
  # yaml/MMD headers
@@ -527,7 +531,6 @@ module CLIMarkdown
527
531
 
528
532
  end
529
533
 
530
-
531
534
  # Gather reference links
532
535
  input.gsub!(/^\s{,3}(?<![\e*])\[\b(.+)\b\]: +(.+)/) do |m|
533
536
  match = Regexp.last_match
@@ -544,34 +547,34 @@ module CLIMarkdown
544
547
  end
545
548
 
546
549
  if @options[:section]
547
- in_section = false
548
- top_level = 1
549
550
  new_content = []
550
-
551
- input.split(/\n/).each {|graf|
552
- if graf =~ /^(#+) *(.*?)( *#+)?$/
553
- level = $1.length
554
- title = $2
555
-
556
- if in_section
557
- if level >= top_level
551
+ @options[:section].each do |sect|
552
+ in_section = false
553
+ top_level = 1
554
+ input.split(/\n/).each do |graf|
555
+ if graf =~ /^(#+) *(.*?)( *#+)?$/
556
+ m = Regexp.last_match
557
+ level = m[1].length
558
+ title = m[2]
559
+ if in_section
560
+ if level >= top_level
561
+ new_content.push(graf)
562
+ else
563
+ in_section = false
564
+ break
565
+ end
566
+ elsif title.downcase == @headers[sect - 1][1].downcase
567
+ in_section = true
568
+ top_level = level + 1
558
569
  new_content.push(graf)
559
570
  else
560
- in_section = false
561
- break
571
+ next
562
572
  end
563
- elsif title.downcase == "#{@headers[@options[:section] - 1][1].downcase}"
564
- in_section = true
565
- top_level = level + 1
573
+ elsif in_section
566
574
  new_content.push(graf)
567
- else
568
- next
569
575
  end
570
- elsif in_section
571
- new_content.push(graf)
572
576
  end
573
- }
574
-
577
+ end
575
578
  input = new_content.join("\n")
576
579
  end
577
580
 
@@ -1,3 +1,3 @@
1
1
  module CLIMarkdown
2
- VERSION = '1.0.32'
2
+ VERSION = '1.0.33'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mdless
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.32
4
+ version: 1.0.33
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brett Terpstra
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-08-05 00:00:00.000000000 Z
11
+ date: 2023-06-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake