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