# module Reline::Terminfo

### Public Class Methods

curses_dl() click to toggle source

    # File lib/reline/terminfo.rb, line 6
    def self.curses_dl
      false
    end

curses_dl_files() click to toggle source

    # File lib/reline/terminfo.rb, line 17
    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 165
    def self.enabled?
      true
    end

setupterm(term, fildes) click to toggle source

    # File lib/reline/terminfo.rb, line 94
    def self.setupterm(term, fildes)
      errret_int = Fiddle::Pointer.malloc(Fiddle::SIZEOF_INT)
      ret = @setupterm.(term, fildes, errret_int)
      errret = errret_int[0, Fiddle::SIZEOF_INT].unpack1('i')
      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

tigetflag(capname) click to toggle source

    # File lib/reline/terminfo.rb, line 141
    def self.tigetflag(capname)
      raise TerminfoError, "capname is not String: #{capname.inspect}" unless capname.is_a?(String)
      flag = @tigetflag.(capname).to_i
      case flag
      when -1
        raise TerminfoError, "not boolean capability: #{capname}"
      when 0
        raise TerminfoError, "can't find capability: #{capname}"
      end
      flag
    end

tigetnum(capname) click to toggle source

    # File lib/reline/terminfo.rb, line 153
    def self.tigetnum(capname)
      raise TerminfoError, "capname is not String: #{capname.inspect}" unless capname.is_a?(String)
      num = @tigetnum.(capname).to_i
      case num
      when -2
        raise TerminfoError, "not numeric capability: #{capname}"
      when -1
        raise TerminfoError, "can't find capability: #{capname}"
      end
      num
    end

tigetstr(capname) click to toggle source

    # File lib/reline/terminfo.rb, line 123
    def self.tigetstr(capname)
      raise TerminfoError, "capname is not String: #{capname.inspect}" unless capname.is_a?(String)
      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 133
    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