module TerminalImage
Constants
- VERSION
Public Class Methods
encode(file)
click to toggle source
# File lib/terminal_image.rb, line 30 def encode(file) if ENV['TERM_PROGRAM'] == 'iTerm.app' encode_for_iterm2(file) elsif which 'img2sixel' encode_for_libsixel(file) else puts 'Use iTerm2 or install libsixel according to https://github.com/saitoha/libsixel#install' raise UnsupportedTerminal, 'Unsupported terminal' end end
encode_url(url)
click to toggle source
# File lib/terminal_image.rb, line 23 def encode_url(url) tempfile = Tempfile.create tempfile.binmode URI.open(url) { |o| tempfile.write o.read } TerminalImage.encode(tempfile) end
show(file)
click to toggle source
# File lib/terminal_image.rb, line 19 def show(file) puts encode(file) end
show_url(url)
click to toggle source
# File lib/terminal_image.rb, line 12 def show_url(url) tempfile = Tempfile.create tempfile.binmode URI.open(url) { |o| tempfile.write o.read } TerminalImage.show(tempfile) end
Private Class Methods
encode_for_iterm2(file)
click to toggle source
# File lib/terminal_image.rb, line 43 def encode_for_iterm2(file) width, height = FastImage.size(file) "\033]1337;File=inline=1;width=#{width}px;height=#{height}px:#{Base64.strict_encode64(file.read)}\a\n" end
encode_for_libsixel(file)
click to toggle source
# File lib/terminal_image.rb, line 48 def encode_for_libsixel(file) `img2sixel < #{file.path} 2>/dev/null` end
which(cmd)
click to toggle source
# File lib/terminal_image.rb, line 52 def which(cmd) exts = ENV['PATHEXT'] ? ENV['PATHEXT'].split(';') : [''] ENV['PATH'].split(File::PATH_SEPARATOR).each do |path| exts.each do |ext| exe = File.join(path, "#{cmd}#{ext}") return exe if File.executable?(exe) && !File.directory?(exe) end end nil end