mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	
							parent
							
								
									fae0b66431
								
							
						
					
					
						commit
						6300c4dcc3
					
				
					 2 changed files with 34 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -74,7 +74,15 @@ module Reline::Terminfo
 | 
			
		|||
    #extern 'char *tparm(const char *str, ...)'
 | 
			
		||||
    @tiparm = Fiddle::Function.new(curses_dl['tparm'], [Fiddle::TYPE_VOIDP, Fiddle::TYPE_VARIADIC], Fiddle::TYPE_VOIDP)
 | 
			
		||||
  end
 | 
			
		||||
  # TODO: add int tigetflag(char *capname) and int tigetnum(char *capname)
 | 
			
		||||
  begin
 | 
			
		||||
    #extern 'char *tigetflag(const char *str, ...)'
 | 
			
		||||
    @tigetflag = Fiddle::Function.new(curses_dl['tigetflag'], [Fiddle::TYPE_VOIDP], Fiddle::TYPE_INT)
 | 
			
		||||
  rescue Fiddle::DLError
 | 
			
		||||
    # OpenBSD lacks tigetflag
 | 
			
		||||
    #extern 'char *tgetflag(const char *str, ...)'
 | 
			
		||||
    @tigetflag = Fiddle::Function.new(curses_dl['tgetflag'], [Fiddle::TYPE_VOIDP], Fiddle::TYPE_INT)
 | 
			
		||||
  end
 | 
			
		||||
  # TODO: add int tigetnum(char *capname)
 | 
			
		||||
 | 
			
		||||
  def self.setupterm(term, fildes)
 | 
			
		||||
    errret_int = String.new("\x00" * 8, encoding: 'ASCII-8BIT')
 | 
			
		||||
| 
						 | 
				
			
			@ -122,6 +130,17 @@ module Reline::Terminfo
 | 
			
		|||
    @tiparm.(str, *new_args).to_s
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def self.tigetflag(capname)
 | 
			
		||||
    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
 | 
			
		||||
 | 
			
		||||
  def self.enabled?
 | 
			
		||||
    true
 | 
			
		||||
  end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -29,4 +29,18 @@ class Reline::Terminfo::Test < Reline::TestCase
 | 
			
		|||
  rescue Reline::Terminfo::TerminfoError => e
 | 
			
		||||
    omit e.message
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_tigetflag
 | 
			
		||||
    assert_instance_of Integer, Reline::Terminfo.tigetflag('xenl')
 | 
			
		||||
  rescue Reline::Terminfo::TerminfoError => e
 | 
			
		||||
    omit e.message
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_tigetflag_with_error
 | 
			
		||||
    assert_raise(Reline::Terminfo::TerminfoError) { Reline::Terminfo.tigetflag('cuu') }
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_tigetflag_with_error_unknwon
 | 
			
		||||
    assert_raise(Reline::Terminfo::TerminfoError) { Reline::Terminfo.tigetflag('unknown') }
 | 
			
		||||
  end
 | 
			
		||||
end if Reline::Terminfo.enabled?
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue