Module: Reline::Terminfo
- Extended by:
- Fiddle::Importer
- Defined in:
- lib/reline/terminfo.rb,
lib/reline/terminfo.rb,
lib/reline/terminfo.rb
Defined Under Namespace
Classes: StringWithTiparm, TerminfoError
Class Method Summary
collapse
Class Method Details
.curses_dl ⇒ Object
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
# File 'lib/reline/terminfo.rb', line 32
def self.curses_dl
return @curses_dl unless @curses_dl == false
if RUBY_VERSION >= '3.0.0'
fiddle_supports_variadic = true
elsif Fiddle.const_defined?(:VERSION,false) and Gem::Version.create(Fiddle::VERSION) >= Gem::Version.create('1.0.1')
fiddle_supports_variadic = true
else
fiddle_supports_variadic = false
end
if fiddle_supports_variadic and not Fiddle.const_defined?(: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 ⇒ Object
17
18
19
20
21
22
23
24
25
26
27
28
29
|
# File 'lib/reline/terminfo.rb', line 17
def self.curses_dl_files
case RUBY_PLATFORM
when /mingw/, /mswin/
[]
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? ⇒ Boolean
165
166
167
|
# File 'lib/reline/terminfo.rb', line 165
def self.enabled?
true
end
|
.setupterm(term, fildes) ⇒ Object
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
|
# 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 0
when -1 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 -1
end
else -2
end
end
|
.tigetflag(capname) ⇒ Object
141
142
143
144
145
146
147
148
149
150
151
|
# 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) ⇒ Object
153
154
155
156
157
158
159
160
161
162
163
|
# 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) ⇒ Object
123
124
125
126
127
128
129
130
131
|
# 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) ⇒ Object
133
134
135
136
137
138
139
|
# 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
|