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.
@@ -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