mdless 0.0.10 → 0.0.12
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 +5 -5
- data/lib/mdless/converter.rb +48 -22
- data/lib/mdless/version.rb +1 -1
- metadata +3 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: bfcee3f2aa45bb9582ae159a7eb7633a002ab6ebc4ff26785f7ed6fa04e4d2aa
|
4
|
+
data.tar.gz: ff9bb80e0c4b3cbfe8951f8bae3f82150b561c77523dda0f93451119a94dd185
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '08248246829c7fd58677f2456a4d4ded712d2905c249f298e3fc2e98ee6eee17f4cd24e46a3376262dab5a1312a7c2d8d6342c7cea412bef63900d51c45a0068'
|
7
|
+
data.tar.gz: 84f9faa5f08157313d9dc0b8d91a661c401b4bc52c0e2f4db68cd9025b11bf9f7d5be5e84423c7bfe52c30f91388ce54db70a6299715c23c30e02a5f0aecb22a
|
data/lib/mdless/converter.rb
CHANGED
@@ -14,7 +14,7 @@ module CLIMarkdown
|
|
14
14
|
|
15
15
|
@options = {}
|
16
16
|
optparse = OptionParser.new do |opts|
|
17
|
-
opts.banner = "#{version} by Brett Terpstra\n\n> Usage: #{CLIMarkdown::EXECUTABLE_NAME} [options] path\n\n"
|
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
20
|
opts.on( '-s', '--section=TITLE', 'Output only a headline-based section of the input (numeric from -l)' ) do |section|
|
@@ -119,7 +119,7 @@ module CLIMarkdown
|
|
119
119
|
end
|
120
120
|
}
|
121
121
|
printout
|
122
|
-
elsif STDIN.
|
122
|
+
elsif ! STDIN.tty?
|
123
123
|
@file = nil
|
124
124
|
begin
|
125
125
|
input = STDIN.read.force_encoding('utf-8')
|
@@ -307,6 +307,38 @@ module CLIMarkdown
|
|
307
307
|
"#{c([:x,:red])}!#{c([:b,:black])}[#{c([:x,:cyan])}#{text}#{c([:b,:black])}](#{c([:u,:yellow])}#{url}#{c([:b,:black])})" + find_color(line)
|
308
308
|
end
|
309
309
|
|
310
|
+
def hiliteCode(language, codeBlock, leader, block)
|
311
|
+
if exec_available('pygmentize')
|
312
|
+
lexer = language.nil? ? '-g' : "-l #{language}"
|
313
|
+
begin
|
314
|
+
hilite, s = Open3.capture2(%Q{pygmentize #{lexer} 2> /dev/null}, :stdin_data=>codeBlock)
|
315
|
+
|
316
|
+
if s.success?
|
317
|
+
hilite = hilite.split(/\n/).map{|l| "#{c([:x,:black])}~ #{xc}" + l}.join("\n")
|
318
|
+
end
|
319
|
+
rescue => e
|
320
|
+
@log.error(e)
|
321
|
+
hilite = block
|
322
|
+
end
|
323
|
+
else
|
324
|
+
hilite = codeBlock.split(/\n/).map do |line|
|
325
|
+
new_code_line = line.gsub(/\t/, ' ')
|
326
|
+
orig_length = new_code_line.size + 3
|
327
|
+
new_code_line.gsub!(/ /, "#{c(%i[x white on_black])} ")
|
328
|
+
|
329
|
+
[
|
330
|
+
"#{c(%i[x black])}~ #{c(%i[x white on_black])} ",
|
331
|
+
new_code_line,
|
332
|
+
c(%i[x white on_black]),
|
333
|
+
' ' * [@cols - orig_length, 0].max,
|
334
|
+
xc
|
335
|
+
].join
|
336
|
+
end.join("\n")
|
337
|
+
end
|
338
|
+
|
339
|
+
"#{c(%i[x magenta])}#{leader}\n#{hilite}#{xc}"
|
340
|
+
end
|
341
|
+
|
310
342
|
def convert_markdown(input)
|
311
343
|
@headers = get_headers(input)
|
312
344
|
# yaml/MMD headers
|
@@ -401,34 +433,28 @@ module CLIMarkdown
|
|
401
433
|
"#" * (match[1].length - h_adjust)
|
402
434
|
end
|
403
435
|
|
436
|
+
# code block parsing
|
404
437
|
input.gsub!(/(?i-m)([`~]{3,})([\s\S]*?)\n([\s\S]*?)\1/ ) do |cb|
|
405
438
|
m = Regexp.last_match
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
hilite, s = Open3.capture2(%Q{pygmentize #{lexer} 2> /dev/null}, :stdin_data=>m[3])
|
413
|
-
|
414
|
-
if s.success?
|
415
|
-
hilite = hilite.split(/\n/).map{|l| "#{c([:x,:black])}~ #{xc}" + l}.join("\n")
|
416
|
-
end
|
417
|
-
rescue => e
|
418
|
-
@log.error(e)
|
419
|
-
hilite = m[0]
|
420
|
-
end
|
421
|
-
|
439
|
+
if m.to_s.include? '#!'
|
440
|
+
@log.warn('Code block contains Shebang')
|
441
|
+
shebang = m.to_s.match(/(#!(?:\/)?)([a-z]\w*)/)
|
442
|
+
language = shebang[2]
|
443
|
+
codeBlock = m[3].to_s.gsub(shebang[1]+shebang[2], '').strip
|
444
|
+
leader = shebang[2] ? shebang[2].upcase + ':' : 'CODE:'
|
422
445
|
else
|
423
|
-
|
446
|
+
# Ignore leading spaces, and use only first word
|
424
447
|
hilite = m[3].split(/\n/).map{|l|
|
425
448
|
new_code_line = l.gsub(/\t/,' ')
|
426
449
|
orig_length = new_code_line.size + 3
|
427
450
|
new_code_line.gsub!(/ /,"#{c([:x,:white,:on_black])} ")
|
428
|
-
|
451
|
+
pad_count = [@cols - orig_length, 0].max
|
452
|
+
"#{c([:x,:black])}~ #{c([:x,:white,:on_black])} " + new_code_line + c([:x,:white,:on_black]) + " "*pad_count + xc
|
429
453
|
}.join("\n")
|
454
|
+
leader = language ? language.upcase + ":" : 'CODE:'
|
430
455
|
end
|
431
|
-
|
456
|
+
leader += xc
|
457
|
+
hiliteCode(language, codeBlock, leader, m[0])
|
432
458
|
end
|
433
459
|
|
434
460
|
# remove empty links
|
@@ -742,7 +768,7 @@ module CLIMarkdown
|
|
742
768
|
|
743
769
|
def which_pager
|
744
770
|
pagers = [ENV['GIT_PAGER'], ENV['PAGER'],
|
745
|
-
`git config --get-all core.pager`.split.first,
|
771
|
+
`git config --get-all core.pager || true`.split.first,
|
746
772
|
'less', 'more', 'cat', 'pager']
|
747
773
|
pagers.select! do |f|
|
748
774
|
if f
|
data/lib/mdless/version.rb
CHANGED
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: 0.0.
|
4
|
+
version: 0.0.12
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brett Terpstra
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-05-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -101,8 +101,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
101
101
|
- !ruby/object:Gem::Version
|
102
102
|
version: '0'
|
103
103
|
requirements: []
|
104
|
-
|
105
|
-
rubygems_version: 2.6.13
|
104
|
+
rubygems_version: 3.0.2
|
106
105
|
signing_key:
|
107
106
|
specification_version: 4
|
108
107
|
summary: A pager like less, but for Markdown files
|