mdless 0.0.9 → 0.0.10

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
  SHA1:
3
- metadata.gz: a4bb4133ae1d8d4e3607f02a75c8ef92edb6ca92
4
- data.tar.gz: 3104daadc69c2dd78978247eb3bee0d607884a9f
3
+ metadata.gz: 618302eecf35ed202db845ca4ddd45fcb6f7df8c
4
+ data.tar.gz: 9413e7e0106c478d120d475efd4d62bde3075d29
5
5
  SHA512:
6
- metadata.gz: fd92f5704dedca5c71a0571bcf34080cc0c122c888a4b3e65f20ae13bc353428a85a688ec07915ce699609cb6e6fec79fcb93b8c1d893cef388e2e4482febc71
7
- data.tar.gz: 705a61c4a88dee79316c5cc61bb24a99ccfaed0c31d367092f4098768f96a1d2c6bdadbb4f022b8fdfbdf6450ede5833ff26458c1970f182afa128f431a293ef
6
+ metadata.gz: dba40280383d15349c27b69c91cb536ec2f63cdb787cba3da251738957a41e4e3b2a7a38bdf25d333d5cb452042e4d9b8516fe8983a8f17a0f31bd9151fa0ece
7
+ data.tar.gz: ecdd1dbdf0b44d29d4c34e74435ca38da3861c92df9d634ac2f90144f806c26313f46bf84cfe4fe51a6254479b26f062421c104825c806690a05fe07dbcc3928
data/README.md CHANGED
@@ -18,7 +18,7 @@ I often use iTerm2 in visor mode, so `qlmanage -p` is annoying. I still wanted a
18
18
  - Inline image display (local, optionally remote) if using iTerm2 2.9+
19
19
  - Syntax highlighting when `pygmentize` is available
20
20
  - List headlines in document
21
- - Display section of the document via headline search
21
+ - Display single section of the document based on headlines
22
22
 
23
23
  ## Installation
24
24
 
@@ -41,7 +41,7 @@ The pager used is determined by system configuration in this order of preference
41
41
  ### Options
42
42
 
43
43
  -s, --section=TITLE Output only a headline-based section of
44
- the input
44
+ the input (numeric based on --list output)
45
45
  -w, --width=COLUMNS Column width to format for (default terminal width)
46
46
  -p, --[no-]pager Formatted output to pager (default on)
47
47
  -P Disable pager (same as --no-pager)
@@ -17,8 +17,8 @@ module CLIMarkdown
17
17
  opts.banner = "#{version} by Brett Terpstra\n\n> Usage: #{CLIMarkdown::EXECUTABLE_NAME} [options] path\n\n"
18
18
 
19
19
  @options[:section] = nil
20
- opts.on( '-s', '--section=TITLE', 'Output only a headline-based section of the input' ) do |section|
21
- @options[:section] = section
20
+ opts.on( '-s', '--section=TITLE', 'Output only a headline-based section of the input (numeric from -l)' ) do |section|
21
+ @options[:section] = section.to_i
22
22
  end
23
23
 
24
24
  @options[:width] = %x{tput cols}.strip.to_i
@@ -95,6 +95,7 @@ module CLIMarkdown
95
95
 
96
96
  @cols = @options[:width]
97
97
  @output = ''
98
+ @header_arr = []
98
99
 
99
100
  input = ''
100
101
  @ref_links = {}
@@ -138,6 +139,14 @@ module CLIMarkdown
138
139
  end
139
140
  end
140
141
 
142
+ def get_headers(input)
143
+ unless @headers && @headers.length > 0
144
+ @headers = input.scan(/^(#+)\s*(.*?)( #+)?\s*$/)
145
+ end
146
+ @headers
147
+ end
148
+
149
+
141
150
  def list_headers(input)
142
151
  h_adjust = highest_header(input) - 1
143
152
  input.gsub!(/^(#+)/) do |m|
@@ -150,35 +159,36 @@ module CLIMarkdown
150
159
  end
151
160
  end
152
161
 
153
- headers = []
162
+ @headers = get_headers(input)
154
163
  last_level = 0
155
- input.split(/\n/).each do |line|
156
- if line =~ /^(#+)\s*(.*?)( #+)?\s*$/
157
- level = $1.size - 1
158
- title = $2
164
+ headers_out = []
165
+ @headers.each_with_index do |h,idx|
159
166
 
160
- if level - 1 > last_level
161
- level = last_level + 1
162
- end
163
- last_level = level
164
-
165
- subdoc = case level
166
- when 0
167
- ' '
168
- when 1
169
- '- '
170
- when 2
171
- '+ '
172
- when 3
173
- '* '
174
- else
175
- ' '
176
- end
177
- headers.push((" "*level) + (c([:x, :yellow]) + subdoc + title.strip + xc))
167
+ level = h[0].length - 1
168
+ title = h[1]
169
+
170
+ if level - 1 > last_level
171
+ level = last_level + 1
178
172
  end
173
+ last_level = level
174
+
175
+ subdoc = case level
176
+ when 0
177
+ ''
178
+ when 1
179
+ '- '
180
+ when 2
181
+ '+ '
182
+ when 3
183
+ '* '
184
+ else
185
+ ' '
186
+ end
187
+ line_no = '%2d: ' % (idx + 1)
188
+ headers_out.push(%Q{#{line_no}#{c([:x, :black])}#{".."*level}#{c([:x, :yellow])}#{subdoc}#{title.strip}#{xc}}.strip)
179
189
  end
180
190
 
181
- @output += headers.join("\n")
191
+ @output += headers_out.join("\n")
182
192
  end
183
193
 
184
194
  def highest_header(input)
@@ -298,7 +308,7 @@ module CLIMarkdown
298
308
  end
299
309
 
300
310
  def convert_markdown(input)
301
-
311
+ @headers = get_headers(input)
302
312
  # yaml/MMD headers
303
313
  in_yaml = false
304
314
  if input.split("\n")[0] =~ /(?i-m)^---[ \t]*?(\n|$)/
@@ -364,14 +374,15 @@ module CLIMarkdown
364
374
  title = $2
365
375
 
366
376
  if in_section
367
- if level > top_level
377
+ if level >= top_level
368
378
  new_content.push(graf)
369
379
  else
380
+ in_section = false
370
381
  break
371
382
  end
372
- elsif title.downcase =~ /#{@options[:section]}/i
383
+ elsif title.downcase == "#{@headers[@options[:section] - 1][1].downcase}"
373
384
  in_section = true
374
- top_level = level
385
+ top_level = level + 1
375
386
  new_content.push(graf)
376
387
  else
377
388
  next
@@ -669,7 +680,7 @@ module CLIMarkdown
669
680
  if File.exists?(File.expand_path(cli))
670
681
  File.executable?(File.expand_path(cli))
671
682
  else
672
- system "which #{cli} &> /dev/null"
683
+ system "which #{cli}", :out => File::NULL
673
684
  end
674
685
  end
675
686
 
@@ -735,7 +746,11 @@ module CLIMarkdown
735
746
  'less', 'more', 'cat', 'pager']
736
747
  pagers.select! do |f|
737
748
  if f
738
- system "which #{f} &> /dev/null"
749
+ if f.strip =~ /[ |]/
750
+ f
751
+ else
752
+ system "which #{f}", :out => File::NULL
753
+ end
739
754
  else
740
755
  false
741
756
  end
@@ -1,3 +1,3 @@
1
1
  module CLIMarkdown
2
- VERSION = '0.0.9'
2
+ VERSION = '0.0.10'
3
3
  end
metadata CHANGED
@@ -1,61 +1,61 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mdless
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brett Terpstra
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-06-13 00:00:00.000000000 Z
11
+ date: 2018-01-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rdoc
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '4.1'
34
- - - '>='
34
+ - - ">="
35
35
  - !ruby/object:Gem::Version
36
36
  version: 4.1.1
37
37
  type: :development
38
38
  prerelease: false
39
39
  version_requirements: !ruby/object:Gem::Requirement
40
40
  requirements:
41
- - - ~>
41
+ - - "~>"
42
42
  - !ruby/object:Gem::Version
43
43
  version: '4.1'
44
- - - '>='
44
+ - - ">="
45
45
  - !ruby/object:Gem::Version
46
46
  version: 4.1.1
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: aruba
49
49
  requirement: !ruby/object:Gem::Requirement
50
50
  requirements:
51
- - - ~>
51
+ - - "~>"
52
52
  - !ruby/object:Gem::Version
53
53
  version: '0'
54
54
  type: :development
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
57
  requirements:
58
- - - ~>
58
+ - - "~>"
59
59
  - !ruby/object:Gem::Version
60
60
  version: '0'
61
61
  description: A CLI that provides a formatted and highlighted view of Markdown files
@@ -80,29 +80,29 @@ licenses:
80
80
  metadata: {}
81
81
  post_install_message:
82
82
  rdoc_options:
83
- - --title
83
+ - "--title"
84
84
  - mdless
85
- - --main
85
+ - "--main"
86
86
  - README.md
87
- - --markup
87
+ - "--markup"
88
88
  - markdown
89
- - -ri
89
+ - "-ri"
90
90
  require_paths:
91
91
  - lib
92
92
  - lib
93
93
  required_ruby_version: !ruby/object:Gem::Requirement
94
94
  requirements:
95
- - - '>='
95
+ - - ">="
96
96
  - !ruby/object:Gem::Version
97
97
  version: '0'
98
98
  required_rubygems_version: !ruby/object:Gem::Requirement
99
99
  requirements:
100
- - - '>='
100
+ - - ">="
101
101
  - !ruby/object:Gem::Version
102
102
  version: '0'
103
103
  requirements: []
104
104
  rubyforge_project:
105
- rubygems_version: 2.4.6
105
+ rubygems_version: 2.6.13
106
106
  signing_key:
107
107
  specification_version: 4
108
108
  summary: A pager like less, but for Markdown files