module Reline::Terminfo
Public Class Methods
curses_dl()
click to toggle source
# File lib/reline/terminfo.rb, line 24 def self.curses_dl return @curses_dl unless @curses_dl == false if RUBY_VERSION >= '3.0.0' # Gem module isn't defined in test-all of the Ruby repository, and # Fiddle in Ruby 3.0.0 or later supports Fiddle::TYPE_VARIADIC. fiddle_supports_variadic = true elsif Fiddle.const_defined?(:VERSION) and Gem::Version.create(Fiddle::VERSION) >= Gem::Version.create('1.0.1') # Fiddle::TYPE_VARIADIC is supported from Fiddle 1.0.1. fiddle_supports_variadic = true else fiddle_supports_variadic = false end if fiddle_supports_variadic and not Fiddle.const_defined?(:TYPE_VARIADIC) # If the libffi version is not 3.0.5 or higher, there isn't TYPE_VARIADIC. fiddle_supports_variadic = false end if fiddle_supports_variadic curses_dl_files.each do |curses_name| result = Fiddle::Handle.new(curses_name) rescue Fiddle::DLError next else @curses_dl = result break end end @curses_dl = nil if @curses_dl == false @curses_dl end
curses_dl_files()
click to toggle source
# File lib/reline/terminfo.rb, line 9 def self.curses_dl_files case RUBY_PLATFORM when /mingw/, /mswin/ # aren't supported [] when /cygwin/ %w[cygncursesw-10.dll cygncurses-10.dll] when /darwin/ %w[libncursesw.dylib libcursesw.dylib libncurses.dylib libcurses.dylib] else %w[libncursesw.so libcursesw.so libncurses.so libcurses.so] end end
enabled?()
click to toggle source
# File lib/reline/terminfo.rb, line 117 def self.enabled? true end
setupterm(term, fildes)
click to toggle source
TODO: add int tigetflag(char *capname) and int tigetnum(char *capname)
# File lib/reline/terminfo.rb, line 71 def self.setupterm(term, fildes) errret_int = String.new("\x00" * 8, encoding: 'ASCII-8BIT') ret = @setupterm.(term, fildes, errret_int) errret = errret_int.unpack('i')[0] case ret when 0 # OK 0 when -1 # ERR case errret when 1 raise TerminfoError.new('The terminal is hardcopy, cannot be used for curses applications.') when 0 raise TerminfoError.new('The terminal could not be found, or that it is a generic type, having too little information for curses applications to run.') when -1 raise TerminfoError.new('The terminfo database could not be found.') else # unknown -1 end else # unknown -2 end end
tigetstr(capname)
click to toggle source
# File lib/reline/terminfo.rb, line 100 def self.tigetstr(capname) capability = @tigetstr.(capname) case capability.to_i when 0, -1 raise TerminfoError, "can't find capability: #{capname}" end StringWithTiparm.new(capability.to_s) end
tiparm(str, *args)
click to toggle source
# File lib/reline/terminfo.rb, line 109 def self.tiparm(str, *args) new_args = [] args.each do |a| new_args << Fiddle::TYPE_INT << a end @tiparm.(str, *new_args).to_s end