mdless 1.0.12 → 1.0.17

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: 29be6a1b5ddb07f00761ef4ecba63116f6b0d3bbe78545536afb5382aa660a53
4
- data.tar.gz: d5d08419668aab7a534a2c67ccb27e0a3a8d7d0b10e1793c6b4a087c591312ec
3
+ metadata.gz: 9ac64b734fe42bba2b3b4ad71b9d660f8bb0b3e4dfed50b022386784c5fd7d49
4
+ data.tar.gz: 74d77256b4d9dba3e6aab1ff39f253b70ce8c0268f0ce7275f5622bce94d5ac9
5
5
  SHA512:
6
- metadata.gz: a76b8fc03d9300c13bc58f73f80db23226cb01a6bf3141718c3cd96c7d947a4db02fcd36b8666ada394749677f2debbebf591e682418ce637ddf3df67d899ff1
7
- data.tar.gz: 31485111a1836fcc4105a2d33addf4f18ac3180ce0ba7c35f6cf7b85a1d10d46666537478de913672548186f9d25048743340bf86747bd811ba52817172f21a5
6
+ metadata.gz: 9d3358e267c7f3fa453bbe8fbcb73c6ab506b4d8bd2e275239ca407e7913a08cffdf4a04ad2d8c7a9c4152a08036cd47039aafa0b00beec85bffd6273b47d45b
7
+ data.tar.gz: f88b17617997dae9ffa4b7aec4bed55d02085af6625a45b331843a91fecad364619c6798f692b12c274c6a67831fa41835f39e3f4d66241e7a16615e4971775e
@@ -1,5 +1,6 @@
1
1
  require 'fileutils'
2
2
  require 'yaml'
3
+ require 'fileutils'
3
4
 
4
5
  module CLIMarkdown
5
6
  class Converter
@@ -41,9 +42,9 @@ module CLIMarkdown
41
42
 
42
43
  @options[:local_images] = false
43
44
  @options[:remote_images] = false
44
- opts.on('-i', '--images=TYPE', 'Include [local|remote (both)] images in output (requires imgcat and iTerm2, default NONE). Does not work with pagers, use with -P' ) do |type|
45
- unless exec_available('imgcat')# && ENV['TERM_PROGRAM'] == 'iTerm.app'
46
- @log.warn('images turned on but imgcat not found')
45
+ opts.on('-i', '--images=TYPE', 'Include [local|remote (both)] images in output (requires chafa or imgcat, default NONE). imgcat does not work with pagers, use with -P' ) do |type|
46
+ unless exec_available('imgcat') || exec_available('chafa')# && ENV['TERM_PROGRAM'] == 'iTerm.app'
47
+ @log.warn('images turned on but imgcat/chafa not found')
47
48
  else
48
49
  if type =~ /^(r|b|a)/i
49
50
  @options[:local_images] = true
@@ -53,12 +54,12 @@ module CLIMarkdown
53
54
  end
54
55
  end
55
56
  end
56
- opts.on('-I', '--all-images', 'Include local and remote images in output (requires imgcat and iTerm2)' ) do
57
- unless exec_available('imgcat')# && ENV['TERM_PROGRAM'] == 'iTerm.app'
58
- @log.warn('images turned on but imgcat not found')
59
- else
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'
60
59
  @options[:local_images] = true
61
60
  @options[:remote_images] = true
61
+ else
62
+ @log.warn('images turned on but imgcat/chafa not found')
62
63
  end
63
64
  end
64
65
 
@@ -847,20 +848,41 @@ module CLIMarkdown
847
848
  else
848
849
  tail = match[4].nil? ? '' : " "+match[4].strip
849
850
  result = nil
850
- if exec_available('imgcat') && @options[:local_images]
851
+ if (exec_available('imgcat') || exec_available('chafa')) && @options[:local_images]
851
852
  if match[3]
852
853
  img_path = match[3]
853
854
  if img_path =~ /^http/ && @options[:remote_images]
854
- begin
855
- res, s = Open3.capture2(%Q{curl -sS "#{img_path}" 2> /dev/null | imgcat})
856
855
 
857
- if s.success?
858
- pre = match[2].size > 0 ? " #{c(%i[d blue])}[#{match[2].strip}]\n" : ''
859
- post = tail.size > 0 ? "\n #{c(%i[b blue])}-- #{tail} --" : ''
860
- result = pre + res + post
856
+ if exec_available('chafa')
857
+ if File.directory?('.mdless_tmp')
858
+ FileUtils.rm_r '.mdless_tmp', force: true
859
+ end
860
+ Dir.mkdir('.mdless_tmp')
861
+ Dir.chdir('.mdless_tmp')
862
+ `curl -SsO #{img_path} 2> /dev/null`
863
+ tmp_img = File.basename(img_path)
864
+ img = `chafa "#{tmp_img}"`
865
+ pre = match[2].size > 0 ? " #{c(%i[d blue])}[#{match[2].strip}]\n" : ''
866
+ post = tail.size > 0 ? "\n #{c(%i[b blue])}-- #{tail} --" : ''
867
+ result = pre + img + post
868
+ Dir.chdir('..')
869
+ FileUtils.rm_r '.mdless_tmp', force: true
870
+ else
871
+ if exec_available('imgcat')
872
+ begin
873
+ res, s = Open3.capture2(%Q{curl -sS "#{img_path}" 2> /dev/null | imgcat})
874
+
875
+ if s.success?
876
+ pre = match[2].size > 0 ? " #{c(%i[d blue])}[#{match[2].strip}]\n" : ''
877
+ post = tail.size > 0 ? "\n #{c(%i[b blue])}-- #{tail} --" : ''
878
+ result = pre + res + post
879
+ end
880
+ rescue => e
881
+ @log.error(e)
882
+ end
883
+ else
884
+ @log.warn("No viewer for remote images")
861
885
  end
862
- rescue => e
863
- @log.error(e)
864
886
  end
865
887
  else
866
888
  if img_path =~ /^[~\/]/
@@ -872,7 +894,11 @@ module CLIMarkdown
872
894
  if File.exists?(img_path)
873
895
  pre = match[2].size > 0 ? " #{c(%i[d blue])}[#{match[2].strip}]\n" : ''
874
896
  post = tail.size > 0 ? "\n #{c(%i[b blue])}-- #{tail} --" : ''
875
- img = %x{imgcat "#{img_path}"}
897
+ if exec_available('chafa')
898
+ img = %x{chafa "#{img_path}"}
899
+ elsif exec_available('imgcat')
900
+ img = %x{imgcat "#{img_path}"}
901
+ end
876
902
  result = pre + img + post
877
903
  end
878
904
  end
@@ -911,7 +937,7 @@ module CLIMarkdown
911
937
  if File.exists?(File.expand_path(cli))
912
938
  File.executable?(File.expand_path(cli))
913
939
  else
914
- system "which #{cli}", :out => File::NULL
940
+ system "which #{cli}", :out => File::NULL, :err => File::NULL
915
941
  end
916
942
  end
917
943
 
@@ -963,29 +989,38 @@ module CLIMarkdown
963
989
 
964
990
  out = cleanup_tables(out)
965
991
  out = clean_markers(out)
966
- out = out.gsub(/\n+{2,}/m,"\n\n") + "\n#{xc}\n"
992
+ out = out.gsub(/\n{2,}/m,"\n\n") + "#{xc}"
967
993
 
968
994
  unless @options[:color]
969
995
  out.uncolor!
970
996
  end
971
997
 
972
998
  if @options[:pager]
973
- page("\n\n" + out)
999
+ page(out)
974
1000
  else
975
- $stdout.puts ("\n\n" + out)
1001
+ $stdout.puts (out)
976
1002
  end
977
1003
  end
978
1004
 
979
1005
  def which_pager
980
- pagers = [ENV['GIT_PAGER'], ENV['PAGER'],
981
- `git config --get-all core.pager || true`.split.first,
982
- 'bat', 'less', 'more', 'cat', 'pager']
1006
+ pagers = [ENV['GIT_PAGER'], ENV['PAGER']]
1007
+
1008
+ if exec_available('git')
1009
+ git_pager = `git config --get-all core.pager || true`.split.first
1010
+ git_pager && pagers.push(git_pager)
1011
+ end
1012
+
1013
+ pagers.concat(['bat', 'less', 'more', 'cat', 'pager'])
1014
+
983
1015
  pagers.select! do |f|
984
1016
  if f
985
1017
  if f.strip =~ /[ |]/
986
1018
  f
1019
+ elsif f == 'most'
1020
+ @log.warn('most not allowed as pager')
1021
+ false
987
1022
  else
988
- system "which #{f}", :out => File::NULL
1023
+ system "which #{f}", :out => File::NULL, :err => File::NULL
989
1024
  end
990
1025
  else
991
1026
  false
@@ -1,3 +1,3 @@
1
1
  module CLIMarkdown
2
- VERSION = '1.0.12'
2
+ VERSION = '1.0.17'
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.12
4
+ version: 1.0.17
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brett Terpstra
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-06-13 00:00:00.000000000 Z
11
+ date: 2021-03-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: '13'
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
- version: '0'
26
+ version: '13'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rdoc
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -80,7 +80,7 @@ homepage: http://brettterpstra.com/project/mdless/
80
80
  licenses:
81
81
  - MIT
82
82
  metadata: {}
83
- post_install_message:
83
+ post_install_message:
84
84
  rdoc_options:
85
85
  - "--title"
86
86
  - mdless
@@ -104,7 +104,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
104
104
  version: '0'
105
105
  requirements: []
106
106
  rubygems_version: 3.0.3
107
- signing_key:
107
+ signing_key:
108
108
  specification_version: 4
109
109
  summary: A pager like less, but for Markdown files
110
110
  test_files: []