rubysl-curses 1.0.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +14 -6
- data/.gitignore +0 -1
- data/.travis.yml +5 -6
- data/README.md +2 -2
- data/Rakefile +0 -1
- data/ext/rubysl/curses/curses.c +2727 -531
- data/ext/rubysl/curses/depend +5 -0
- data/ext/rubysl/curses/extconf.rb +117 -15
- data/lib/rubysl/curses.rb +1 -1
- data/lib/rubysl/curses/version.rb +1 -1
- data/rubysl-curses.gemspec +0 -1
- metadata +14 -31
- data/lib/curses/extconf.rb +0 -31
- data/lib/curses/hello.rb +0 -30
- data/lib/curses/mouse.rb +0 -53
- data/lib/curses/rain.rb +0 -76
- data/lib/curses/view.rb +0 -91
- data/lib/curses/view2.rb +0 -115
- data/lib/rubysl-curses.rb +0 -7
@@ -1,31 +1,133 @@
|
|
1
1
|
require 'mkmf'
|
2
2
|
|
3
|
+
def have_all(*args) # :nodoc:
|
4
|
+
old_libs = $libs.dup
|
5
|
+
old_defs = $defs.dup
|
6
|
+
result = []
|
7
|
+
begin
|
8
|
+
args.each {|arg|
|
9
|
+
r = arg.call(*result)
|
10
|
+
if !r
|
11
|
+
return nil
|
12
|
+
end
|
13
|
+
result << r
|
14
|
+
}
|
15
|
+
result
|
16
|
+
ensure
|
17
|
+
if result.length != args.length
|
18
|
+
$libs = old_libs
|
19
|
+
$defs = old_defs
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
3
24
|
dir_config('curses')
|
4
25
|
dir_config('ncurses')
|
5
26
|
dir_config('termcap')
|
6
27
|
|
7
|
-
make=false
|
8
28
|
have_library("mytinfo", "tgetent") if /bow/ =~ RUBY_PLATFORM
|
9
29
|
have_library("tinfo", "tgetent") or have_library("termcap", "tgetent")
|
10
|
-
if have_header(*curses=%w"ncurses.h") and have_library("ncurses", "initscr")
|
11
|
-
make=true
|
12
|
-
elsif have_header(*curses=%w"ncurses/curses.h") and have_library("ncurses", "initscr")
|
13
|
-
make=true
|
14
|
-
elsif have_header(*curses=%w"curses_colr/curses.h") and have_library("cur_colr", "initscr")
|
15
|
-
curses.unshift("varargs.h")
|
16
|
-
make=true
|
17
|
-
elsif have_header(*curses=%w"curses.h") and have_library("curses", "initscr")
|
18
|
-
make=true
|
19
|
-
end
|
20
30
|
|
21
|
-
|
22
|
-
|
31
|
+
header_library = nil
|
32
|
+
[
|
33
|
+
["ncurses.h", ["ncursesw", "ncurses"]],
|
34
|
+
["ncurses/curses.h", ["ncurses"]],
|
35
|
+
["curses_colr/curses.h", ["cur_colr"]],
|
36
|
+
["curses.h", ["curses", "pdcurses"]],
|
37
|
+
# ["xcurses.h", ["XCurses"]], # XCurses (PDCurses for X11)
|
38
|
+
].each {|hdr, libs|
|
39
|
+
header_library = have_all(
|
40
|
+
lambda { have_header(hdr) && hdr },
|
41
|
+
lambda {|h| libs.find {|lib| have_library(lib, "initscr", h) } })
|
42
|
+
if header_library
|
43
|
+
break;
|
44
|
+
end
|
45
|
+
}
|
46
|
+
|
47
|
+
if header_library
|
48
|
+
header, library = header_library
|
49
|
+
puts "header: #{header}"
|
50
|
+
puts "library: #{library}"
|
51
|
+
|
52
|
+
curses = [header]
|
53
|
+
if header == 'curses_colr/curses.h'
|
54
|
+
curses.unshift("varargs.h")
|
55
|
+
end
|
56
|
+
|
57
|
+
for f in %w(beep bkgd bkgdset curs_set deleteln doupdate flash
|
58
|
+
getbkgd getnstr init isendwin keyname keypad resizeterm
|
59
|
+
scrl set setscrreg ungetch
|
60
|
+
wattroff wattron wattrset wbkgd wbkgdset wdeleteln wgetnstr
|
61
|
+
wresize wscrl wsetscrreg
|
62
|
+
def_prog_mode reset_prog_mode timeout wtimeout nodelay
|
63
|
+
init_color wcolor_set use_default_colors newpad)
|
23
64
|
have_func(f) || (have_macro(f, curses) && $defs.push(format("-DHAVE_%s", f.upcase)))
|
24
65
|
end
|
25
66
|
flag = "-D_XOPEN_SOURCE_EXTENDED"
|
26
|
-
|
27
|
-
|
67
|
+
if try_static_assert("sizeof(char*)>sizeof(int)",
|
68
|
+
%w[stdio.h stdlib.h]+curses,
|
69
|
+
flag)
|
28
70
|
$defs << flag
|
29
71
|
end
|
72
|
+
have_var("ESCDELAY", curses)
|
73
|
+
have_var("TABSIZE", curses)
|
74
|
+
have_var("COLORS", curses)
|
75
|
+
have_var("COLOR_PAIRS", curses)
|
76
|
+
|
77
|
+
# SVR4 curses has a (undocumented) variable char *curses_version.
|
78
|
+
# ncurses and PDcurses has a function char *curses_version().
|
79
|
+
# Note that the original BSD curses doesn't provide version information.
|
80
|
+
#
|
81
|
+
# configure option:
|
82
|
+
# --with-curses-version=function for SVR4
|
83
|
+
# --with-curses-version=variable for ncurses and PDcurses
|
84
|
+
# (not given) automatically determined
|
85
|
+
|
86
|
+
case with_curses_version = with_config("curses-version")
|
87
|
+
when "function"
|
88
|
+
$defs << '-DHAVE_FUNC_CURSES_VERSION'
|
89
|
+
when "variable"
|
90
|
+
$defs << '-DHAVE_VAR_CURSES_VERSION'
|
91
|
+
when nil
|
92
|
+
func_test_program = cpp_include(curses) + <<-"End"
|
93
|
+
int main(int argc, char *argv[])
|
94
|
+
{
|
95
|
+
curses_version();
|
96
|
+
return EXIT_SUCCESS;
|
97
|
+
}
|
98
|
+
End
|
99
|
+
var_test_program = cpp_include(curses) + <<-"End"
|
100
|
+
extern char *curses_version;
|
101
|
+
int main(int argc, char *argv[])
|
102
|
+
{
|
103
|
+
int i = 0;
|
104
|
+
for (i = 0; i < 100; i++) {
|
105
|
+
if (curses_version[i] == 0)
|
106
|
+
return 0 < i ? EXIT_SUCCESS : EXIT_FAILURE;
|
107
|
+
if (curses_version[i] & 0x80)
|
108
|
+
return EXIT_FAILURE;
|
109
|
+
}
|
110
|
+
return EXIT_FAILURE;
|
111
|
+
}
|
112
|
+
End
|
113
|
+
try = method(CROSS_COMPILING ? :try_link : :try_run)
|
114
|
+
function_p = checking_for(checking_message('function curses_version', curses)) { try[func_test_program] }
|
115
|
+
variable_p = checking_for(checking_message('variable curses_version', curses)) { try[var_test_program] }
|
116
|
+
if function_p and variable_p
|
117
|
+
if [header, library].grep(/ncurses|pdcurses|xcurses/i)
|
118
|
+
variable_p = false
|
119
|
+
else
|
120
|
+
warn "found curses_version but cannot determin whether it is a"
|
121
|
+
warn "function or a variable, so assume a variable in old SVR4"
|
122
|
+
warn "ncurses."
|
123
|
+
function_p = false
|
124
|
+
end
|
125
|
+
end
|
126
|
+
$defs << '-DHAVE_FUNC_CURSES_VERSION' if function_p
|
127
|
+
$defs << '-DHAVE_VAR_CURSES_VERSION' if variable_p
|
128
|
+
else
|
129
|
+
warn "unexpeted value for --with-curses-version: #{with_curses_version}"
|
130
|
+
end
|
131
|
+
|
30
132
|
create_makefile("curses/curses")
|
31
133
|
end
|
data/lib/rubysl/curses.rb
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
require "curses/curses"
|
1
|
+
require "rubysl/curses/curses"
|
2
2
|
require "rubysl/curses/version"
|
data/rubysl-curses.gemspec
CHANGED
metadata
CHANGED
@@ -1,16 +1,17 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubysl-curses
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brian Shirai
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-09-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
+
prerelease: false
|
14
15
|
name: bundler
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
16
17
|
requirements:
|
@@ -18,13 +19,13 @@ dependencies:
|
|
18
19
|
- !ruby/object:Gem::Version
|
19
20
|
version: '1.3'
|
20
21
|
type: :development
|
21
|
-
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ~>
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.3'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
+
prerelease: false
|
28
29
|
name: rake
|
29
30
|
requirement: !ruby/object:Gem::Requirement
|
30
31
|
requirements:
|
@@ -32,13 +33,13 @@ dependencies:
|
|
32
33
|
- !ruby/object:Gem::Version
|
33
34
|
version: '10.0'
|
34
35
|
type: :development
|
35
|
-
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - ~>
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '10.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
+
prerelease: false
|
42
43
|
name: mspec
|
43
44
|
requirement: !ruby/object:Gem::Requirement
|
44
45
|
requirements:
|
@@ -46,26 +47,11 @@ dependencies:
|
|
46
47
|
- !ruby/object:Gem::Version
|
47
48
|
version: '1.5'
|
48
49
|
type: :development
|
49
|
-
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '1.5'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: rubysl-prettyprint
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - ~>
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '1.0'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - ~>
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '1.0'
|
69
55
|
description: Ruby standard library curses.
|
70
56
|
email:
|
71
57
|
- brixen@gmail.com
|
@@ -81,15 +67,9 @@ files:
|
|
81
67
|
- README.md
|
82
68
|
- Rakefile
|
83
69
|
- ext/rubysl/curses/curses.c
|
70
|
+
- ext/rubysl/curses/depend
|
84
71
|
- ext/rubysl/curses/extconf.rb
|
85
72
|
- lib/curses.rb
|
86
|
-
- lib/curses/extconf.rb
|
87
|
-
- lib/curses/hello.rb
|
88
|
-
- lib/curses/mouse.rb
|
89
|
-
- lib/curses/rain.rb
|
90
|
-
- lib/curses/view.rb
|
91
|
-
- lib/curses/view2.rb
|
92
|
-
- lib/rubysl-curses.rb
|
93
73
|
- lib/rubysl/curses.rb
|
94
74
|
- lib/rubysl/curses/version.rb
|
95
75
|
- rubysl-curses.gemspec
|
@@ -103,18 +83,21 @@ require_paths:
|
|
103
83
|
- lib
|
104
84
|
required_ruby_version: !ruby/object:Gem::Requirement
|
105
85
|
requirements:
|
106
|
-
- - '>='
|
86
|
+
- - ! '>='
|
107
87
|
- !ruby/object:Gem::Version
|
108
|
-
version:
|
88
|
+
version: !binary |-
|
89
|
+
MA==
|
109
90
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
110
91
|
requirements:
|
111
|
-
- - '>='
|
92
|
+
- - ! '>='
|
112
93
|
- !ruby/object:Gem::Version
|
113
|
-
version:
|
94
|
+
version: !binary |-
|
95
|
+
MA==
|
114
96
|
requirements: []
|
115
97
|
rubyforge_project:
|
116
|
-
rubygems_version: 2.0.
|
98
|
+
rubygems_version: 2.0.6
|
117
99
|
signing_key:
|
118
100
|
specification_version: 4
|
119
101
|
summary: Ruby standard library curses.
|
120
102
|
test_files: []
|
103
|
+
has_rdoc:
|
data/lib/curses/extconf.rb
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
require 'mkmf'
|
2
|
-
|
3
|
-
dir_config('curses')
|
4
|
-
dir_config('ncurses')
|
5
|
-
dir_config('termcap')
|
6
|
-
|
7
|
-
make=false
|
8
|
-
have_library("mytinfo", "tgetent") if /bow/ =~ RUBY_PLATFORM
|
9
|
-
have_library("tinfo", "tgetent") or have_library("termcap", "tgetent")
|
10
|
-
if have_header(*curses=%w"ncurses.h") and have_library("ncurses", "initscr")
|
11
|
-
make=true
|
12
|
-
elsif have_header(*curses=%w"ncurses/curses.h") and have_library("ncurses", "initscr")
|
13
|
-
make=true
|
14
|
-
elsif have_header(*curses=%w"curses_colr/curses.h") and have_library("cur_colr", "initscr")
|
15
|
-
curses.unshift("varargs.h")
|
16
|
-
make=true
|
17
|
-
elsif have_header(*curses=%w"curses.h") and have_library("curses", "initscr")
|
18
|
-
make=true
|
19
|
-
end
|
20
|
-
|
21
|
-
if make
|
22
|
-
for f in %w(beep bkgd bkgdset curs_set deleteln doupdate flash getbkgd getnstr init isendwin keyname keypad resizeterm scrl set setscrreg ungetch wattroff wattron wattrset wbkgd wbkgdset wdeleteln wgetnstr wresize wscrl wsetscrreg def_prog_mode reset_prog_mode timeout wtimeout nodelay init_color wcolor_set)
|
23
|
-
have_func(f) || (have_macro(f, curses) && $defs.push(format("-DHAVE_%s", f.upcase)))
|
24
|
-
end
|
25
|
-
flag = "-D_XOPEN_SOURCE_EXTENDED"
|
26
|
-
src = "int test_var[(sizeof(char*)>sizeof(int))*2-1];"
|
27
|
-
if try_compile(cpp_include(%w[stdio.h stdlib.h]+curses)+src , flag)
|
28
|
-
$defs << flag
|
29
|
-
end
|
30
|
-
create_makefile("curses")
|
31
|
-
end
|
data/lib/curses/hello.rb
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
#!/usr/local/bin/ruby
|
2
|
-
|
3
|
-
require "curses"
|
4
|
-
include Curses
|
5
|
-
|
6
|
-
def show_message(message)
|
7
|
-
width = message.length + 6
|
8
|
-
win = Window.new(5, width,
|
9
|
-
(lines - 5) / 2, (cols - width) / 2)
|
10
|
-
win.box(?|, ?-)
|
11
|
-
win.setpos(2, 3)
|
12
|
-
win.addstr(message)
|
13
|
-
win.refresh
|
14
|
-
win.getch
|
15
|
-
win.close
|
16
|
-
end
|
17
|
-
|
18
|
-
init_screen
|
19
|
-
begin
|
20
|
-
crmode
|
21
|
-
# show_message("Hit any key")
|
22
|
-
setpos((lines - 5) / 2, (cols - 10) / 2)
|
23
|
-
addstr("Hit any key")
|
24
|
-
refresh
|
25
|
-
getch
|
26
|
-
show_message("Hello, World!")
|
27
|
-
refresh
|
28
|
-
ensure
|
29
|
-
close_screen
|
30
|
-
end
|
data/lib/curses/mouse.rb
DELETED
@@ -1,53 +0,0 @@
|
|
1
|
-
#!/usr/local/bin/ruby
|
2
|
-
|
3
|
-
require "curses"
|
4
|
-
include Curses
|
5
|
-
|
6
|
-
def show_message(*msgs)
|
7
|
-
message = msgs.join
|
8
|
-
width = message.length + 6
|
9
|
-
win = Window.new(5, width,
|
10
|
-
(lines - 5) / 2, (cols - width) / 2)
|
11
|
-
win.keypad = true
|
12
|
-
win.attron(color_pair(COLOR_RED)){
|
13
|
-
win.box(?|, ?-, ?+)
|
14
|
-
}
|
15
|
-
win.setpos(2, 3)
|
16
|
-
win.addstr(message)
|
17
|
-
win.refresh
|
18
|
-
win.getch
|
19
|
-
win.close
|
20
|
-
end
|
21
|
-
|
22
|
-
init_screen
|
23
|
-
start_color
|
24
|
-
init_pair(COLOR_BLUE,COLOR_BLUE,COLOR_WHITE)
|
25
|
-
init_pair(COLOR_RED,COLOR_RED,COLOR_WHITE)
|
26
|
-
crmode
|
27
|
-
noecho
|
28
|
-
stdscr.keypad(true)
|
29
|
-
|
30
|
-
begin
|
31
|
-
mousemask(BUTTON1_CLICKED|BUTTON2_CLICKED|BUTTON3_CLICKED|BUTTON4_CLICKED)
|
32
|
-
setpos((lines - 5) / 2, (cols - 10) / 2)
|
33
|
-
attron(color_pair(COLOR_BLUE)|A_BOLD){
|
34
|
-
addstr("click")
|
35
|
-
}
|
36
|
-
refresh
|
37
|
-
while( true )
|
38
|
-
c = getch
|
39
|
-
case c
|
40
|
-
when KEY_MOUSE
|
41
|
-
m = getmouse
|
42
|
-
if( m )
|
43
|
-
show_message("getch = #{c.inspect}, ",
|
44
|
-
"mouse event = #{'0x%x' % m.bstate}, ",
|
45
|
-
"axis = (#{m.x},#{m.y},#{m.z})")
|
46
|
-
end
|
47
|
-
break
|
48
|
-
end
|
49
|
-
end
|
50
|
-
refresh
|
51
|
-
ensure
|
52
|
-
close_screen
|
53
|
-
end
|
data/lib/curses/rain.rb
DELETED
@@ -1,76 +0,0 @@
|
|
1
|
-
#!/usr/local/bin/ruby
|
2
|
-
# rain for a curses test
|
3
|
-
|
4
|
-
require "curses"
|
5
|
-
include Curses
|
6
|
-
|
7
|
-
def onsig(sig)
|
8
|
-
close_screen
|
9
|
-
exit sig
|
10
|
-
end
|
11
|
-
|
12
|
-
def ranf
|
13
|
-
rand(32767).to_f / 32767
|
14
|
-
end
|
15
|
-
|
16
|
-
# main #
|
17
|
-
for i in 1 .. 15 # SIGHUP .. SIGTERM
|
18
|
-
if trap(i, "SIG_IGN") != 0 then # 0 for SIG_IGN
|
19
|
-
trap(i) {|sig| onsig(sig) }
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
init_screen
|
24
|
-
nl
|
25
|
-
noecho
|
26
|
-
srand
|
27
|
-
|
28
|
-
xpos = {}
|
29
|
-
ypos = {}
|
30
|
-
r = lines - 4
|
31
|
-
c = cols - 4
|
32
|
-
for i in 0 .. 4
|
33
|
-
xpos[i] = (c * ranf).to_i + 2
|
34
|
-
ypos[i] = (r * ranf).to_i + 2
|
35
|
-
end
|
36
|
-
|
37
|
-
i = 0
|
38
|
-
while TRUE
|
39
|
-
x = (c * ranf).to_i + 2
|
40
|
-
y = (r * ranf).to_i + 2
|
41
|
-
|
42
|
-
|
43
|
-
setpos(y, x); addstr(".")
|
44
|
-
|
45
|
-
setpos(ypos[i], xpos[i]); addstr("o")
|
46
|
-
|
47
|
-
i = if i == 0 then 4 else i - 1 end
|
48
|
-
setpos(ypos[i], xpos[i]); addstr("O")
|
49
|
-
|
50
|
-
i = if i == 0 then 4 else i - 1 end
|
51
|
-
setpos(ypos[i] - 1, xpos[i]); addstr("-")
|
52
|
-
setpos(ypos[i], xpos[i] - 1); addstr("|.|")
|
53
|
-
setpos(ypos[i] + 1, xpos[i]); addstr("-")
|
54
|
-
|
55
|
-
i = if i == 0 then 4 else i - 1 end
|
56
|
-
setpos(ypos[i] - 2, xpos[i]); addstr("-")
|
57
|
-
setpos(ypos[i] - 1, xpos[i] - 1); addstr("/ \\")
|
58
|
-
setpos(ypos[i], xpos[i] - 2); addstr("| O |")
|
59
|
-
setpos(ypos[i] + 1, xpos[i] - 1); addstr("\\ /")
|
60
|
-
setpos(ypos[i] + 2, xpos[i]); addstr("-")
|
61
|
-
|
62
|
-
i = if i == 0 then 4 else i - 1 end
|
63
|
-
setpos(ypos[i] - 2, xpos[i]); addstr(" ")
|
64
|
-
setpos(ypos[i] - 1, xpos[i] - 1); addstr(" ")
|
65
|
-
setpos(ypos[i], xpos[i] - 2); addstr(" ")
|
66
|
-
setpos(ypos[i] + 1, xpos[i] - 1); addstr(" ")
|
67
|
-
setpos(ypos[i] + 2, xpos[i]); addstr(" ")
|
68
|
-
|
69
|
-
|
70
|
-
xpos[i] = x
|
71
|
-
ypos[i] = y
|
72
|
-
refresh
|
73
|
-
sleep(0.5)
|
74
|
-
end
|
75
|
-
|
76
|
-
# end of main
|