rubysl-curses 1.0.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,5 @@
1
+ $(OBJS): $(HDRS) $(ruby_headers) \
2
+ $(hdrdir)/ruby/io.h \
3
+ $(hdrdir)/ruby/encoding.h \
4
+ $(hdrdir)/ruby/oniguruma.h \
5
+ $(hdrdir)/ruby/thread.h
@@ -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
- 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)
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
- src = "int test_var[(sizeof(char*)>sizeof(int))*2-1];"
27
- if try_compile(cpp_include(%w[stdio.h stdlib.h]+curses)+src , flag)
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"
@@ -1,5 +1,5 @@
1
1
  module RubySL
2
2
  module Curses
3
- VERSION = "1.0.0"
3
+ VERSION = "2.0.0"
4
4
  end
5
5
  end
@@ -20,5 +20,4 @@ Gem::Specification.new do |spec|
20
20
  spec.add_development_dependency "bundler", "~> 1.3"
21
21
  spec.add_development_dependency "rake", "~> 10.0"
22
22
  spec.add_development_dependency "mspec", "~> 1.5"
23
- spec.add_development_dependency "rubysl-prettyprint", "~> 1.0"
24
23
  end
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: 1.0.0
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-12-27 00:00:00.000000000 Z
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: '0'
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: '0'
94
+ version: !binary |-
95
+ MA==
114
96
  requirements: []
115
97
  rubyforge_project:
116
- rubygems_version: 2.0.7
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:
@@ -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