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, ...)'
|
#extern 'char *tparm(const char *str, ...)'
|
||||||
@tiparm = Fiddle::Function.new(curses_dl['tparm'], [Fiddle::TYPE_VOIDP, Fiddle::TYPE_VARIADIC], Fiddle::TYPE_VOIDP)
|
@tiparm = Fiddle::Function.new(curses_dl['tparm'], [Fiddle::TYPE_VOIDP, Fiddle::TYPE_VARIADIC], Fiddle::TYPE_VOIDP)
|
||||||
end
|
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)
|
def self.setupterm(term, fildes)
|
||||||
errret_int = String.new("\x00" * 8, encoding: 'ASCII-8BIT')
|
errret_int = String.new("\x00" * 8, encoding: 'ASCII-8BIT')
|
||||||
|
|
@ -122,6 +130,17 @@ module Reline::Terminfo
|
||||||
@tiparm.(str, *new_args).to_s
|
@tiparm.(str, *new_args).to_s
|
||||||
end
|
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?
|
def self.enabled?
|
||||||
true
|
true
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -29,4 +29,18 @@ class Reline::Terminfo::Test < Reline::TestCase
|
||||||
rescue Reline::Terminfo::TerminfoError => e
|
rescue Reline::Terminfo::TerminfoError => e
|
||||||
omit e.message
|
omit e.message
|
||||||
end
|
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?
|
end if Reline::Terminfo.enabled?
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue