ffi-ncurses 0.3.3 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (61) hide show
  1. data/COPYING +22 -0
  2. data/Gemfile +5 -0
  3. data/Gemfile.lock +13 -0
  4. data/History.txt +32 -3
  5. data/README.rdoc +118 -58
  6. data/Rakefile +30 -0
  7. data/examples/acs_chars.rb +53 -0
  8. data/examples/acs_chars.rbc +1502 -0
  9. data/examples/{example-attributes.rb → attributes.rb} +0 -0
  10. data/examples/color.rb +63 -0
  11. data/examples/cursor.rb +27 -0
  12. data/examples/example.rb +17 -17
  13. data/examples/getkey.rb +212 -0
  14. data/examples/{example-getsetsyx.rb → getsetsyx.rb} +2 -2
  15. data/examples/globals.rb +38 -0
  16. data/examples/hello.rb +34 -0
  17. data/examples/hello.rbc +638 -0
  18. data/examples/hellowide.rb +59 -0
  19. data/examples/keys.rb +27 -0
  20. data/examples/{example-mouse.rb → mouse.rb} +2 -2
  21. data/examples/multiterm.rb +120 -0
  22. data/examples/ncurses/LICENSES_for_examples +26 -0
  23. data/examples/{ncurses-example.rb → ncurses/example.rb} +13 -80
  24. data/examples/ncurses/hello_ncurses.rb +57 -0
  25. data/examples/ncurses/rain.rb +220 -0
  26. data/examples/ncurses/read_line.rb +67 -0
  27. data/examples/ncurses/subwin.rb +71 -0
  28. data/examples/ncurses/tclock.rb +227 -0
  29. data/examples/newterm.rb +65 -0
  30. data/examples/panel_simple.rb +82 -0
  31. data/examples/{example-printw-variadic.rb → printw-variadic.rb} +1 -1
  32. data/examples/ripoffline.rb +86 -0
  33. data/examples/run-all.sh +14 -0
  34. data/examples/{example-softkeys.rb → softkeys.rb} +0 -0
  35. data/examples/{example-stdscr.rb → stdscr.rb} +2 -1
  36. data/examples/temp_leave.rb +99 -0
  37. data/examples/viewer.rb +350 -0
  38. data/examples/wacs_chars.rb +64 -0
  39. data/examples/windows.rb +73 -0
  40. data/ffi-ncurses.gemspec +39 -52
  41. data/lib/ffi-ncurses.rb +214 -474
  42. data/lib/ffi-ncurses/acs.rb +150 -0
  43. data/lib/ffi-ncurses/bool_wrappers.rb +66 -0
  44. data/lib/ffi-ncurses/functions.rb +450 -0
  45. data/lib/ffi-ncurses/keydefs.rb +136 -99
  46. data/lib/ffi-ncurses/mouse.rb +106 -106
  47. data/lib/ffi-ncurses/ncurses.rb +176 -0
  48. data/lib/ffi-ncurses/{ord-shim.rb → ord_shim.rb} +0 -0
  49. data/lib/ffi-ncurses/panel.rb +21 -0
  50. data/lib/ffi-ncurses/typedefs.rb +35 -0
  51. data/lib/ffi-ncurses/version.rb +7 -0
  52. data/lib/ffi-ncurses/widechars.rb +137 -0
  53. data/lib/ffi-ncurses/winstruct.rb +55 -33
  54. data/spec/attached_functions_spec.rb +42 -0
  55. metadata +95 -85
  56. data/examples/example-colour.rb +0 -63
  57. data/examples/example-cursor.rb +0 -22
  58. data/examples/example-hello.rb +0 -24
  59. data/examples/example-jruby.rb +0 -14
  60. data/examples/example-keys.rb +0 -25
  61. data/examples/example-windows.rb +0 -24
@@ -0,0 +1,42 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'minitest/spec'
3
+ require 'minitest/autorun'
4
+ require 'ffi-ncurses'
5
+
6
+ # Some preliminary sanity tests for FFI::NCurses
7
+
8
+ # test if all expected functions have been attached
9
+ describe "attached functions" do
10
+
11
+ FFI::NCurses::FUNCTION_SIGNATURES.each do |sig|
12
+ name = sig[0].to_s
13
+ if name =~ /^_.*trace/ || name == "trace"
14
+ next
15
+ end
16
+
17
+ it "should provide a module level function #{name}" do
18
+ FFI::NCurses.respond_to?(name).must_equal true
19
+ end
20
+
21
+ # map to_s to handle the change in method names between 1.8.7 and 1.9.x
22
+ it "should provide an instance level function #{name}" do
23
+ FFI::NCurses.instance_methods.map{ |x| x.to_s }.include?(name).must_equal true
24
+ end
25
+
26
+ end
27
+ end
28
+
29
+ # test that initscr and stdscr match up
30
+ describe "initscr" do
31
+
32
+ it "should return an FFI::Pointer" do
33
+ begin
34
+ scr = FFI::NCurses.initscr
35
+ scr.class.must_equal FFI::Pointer
36
+ scr.must_equal FFI::NCurses.stdscr
37
+ ensure
38
+ FFI::NCurses.endwin
39
+ end
40
+ end
41
+
42
+ end
metadata CHANGED
@@ -1,114 +1,124 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: ffi-ncurses
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 3
8
- - 3
9
- version: 0.3.3
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.4.0
5
+ prerelease:
10
6
  platform: ruby
11
- authors:
7
+ authors:
12
8
  - Sean O'Halpin
13
9
  autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
-
17
- date: 2009-02-24 00:00:00 +00:00
18
- default_executable:
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2011-09-25 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: ffi
16
+ requirement: &72785530 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 1.0.9
22
+ type: :runtime
22
23
  prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
24
+ version_requirements: *72785530
25
+ - !ruby/object:Gem::Dependency
26
+ name: ffi-locale
27
+ requirement: &72784780 !ruby/object:Gem::Requirement
24
28
  none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- segments:
29
- - 0
30
- - 6
31
- - 3
32
- version: 0.6.3
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: 1.0.0
33
33
  type: :runtime
34
- version_requirements: *id001
35
- description: |
36
- A wrapper for ncurses 5.x. Tested on Ubuntu 8.04 to 10.04 and Mac OS X
37
- 10.4 (Tiger) with ruby 1.8.6, 1.8.7 and 1.9.x using ffi (>= 0.6.3) and
38
- JRuby 1.5.1.
39
-
40
- The API is a transliteration of the C API rather than an attempt to
41
- provide an idiomatic Ruby object-oriented API.
42
-
43
- See the examples directory for real working examples.
44
-
34
+ prerelease: false
35
+ version_requirements: *72784780
36
+ description: An FFI wrapper around ncursesw 5.x for MRI Ruby 1.8.x, 1.9.x and JRuby.
45
37
  email: sean.ohalpin@gmail.com
46
38
  executables: []
47
-
48
39
  extensions: []
49
-
50
- extra_rdoc_files:
51
- - History.txt
52
- - README.rdoc
53
- files:
40
+ extra_rdoc_files: []
41
+ files:
42
+ - ffi-ncurses.gemspec
43
+ - lib/ffi-ncurses.rb
44
+ - COPYING
54
45
  - History.txt
55
46
  - README.rdoc
56
- - examples/doc-eg1.rb
47
+ - Rakefile
48
+ - Gemfile
49
+ - Gemfile.lock
50
+ - examples/windows.rb
51
+ - examples/viewer.rb
52
+ - examples/softkeys.rb
53
+ - examples/example.rb
54
+ - examples/hello.rbc
55
+ - examples/newterm.rb
56
+ - examples/hello.rb
57
57
  - examples/doc-eg2.rb
58
+ - examples/run-all.sh
59
+ - examples/getsetsyx.rb
60
+ - examples/wacs_chars.rb
61
+ - examples/printw-variadic.rb
62
+ - examples/attributes.rb
63
+ - examples/doc-eg1.rb
64
+ - examples/panel_simple.rb
65
+ - examples/ncurses/tclock.rb
66
+ - examples/ncurses/LICENSES_for_examples
67
+ - examples/ncurses/example.rb
68
+ - examples/ncurses/read_line.rb
69
+ - examples/ncurses/rain.rb
70
+ - examples/ncurses/subwin.rb
71
+ - examples/ncurses/hello_ncurses.rb
72
+ - examples/globals.rb
73
+ - examples/hellowide.rb
74
+ - examples/stdscr.rb
75
+ - examples/acs_chars.rbc
76
+ - examples/ripoffline.rb
58
77
  - examples/doc-eg3.rb
59
- - examples/example-attributes.rb
60
- - examples/example-colour.rb
61
- - examples/example-cursor.rb
62
- - examples/example-getsetsyx.rb
63
- - examples/example-hello.rb
64
- - examples/example-jruby.rb
65
- - examples/example-keys.rb
66
- - examples/example-mouse.rb
67
- - examples/example-printw-variadic.rb
68
- - examples/example-softkeys.rb
69
- - examples/example-stdscr.rb
70
- - examples/example-windows.rb
71
- - examples/example.rb
72
- - examples/ncurses-example.rb
73
- - ffi-ncurses.gemspec
74
- - lib/ffi-ncurses.rb
75
- - lib/ffi-ncurses/darwin.rb
78
+ - examples/getkey.rb
79
+ - examples/cursor.rb
80
+ - examples/multiterm.rb
81
+ - examples/temp_leave.rb
82
+ - examples/color.rb
83
+ - examples/mouse.rb
84
+ - examples/acs_chars.rb
85
+ - examples/keys.rb
86
+ - lib/ffi-ncurses/functions.rb
76
87
  - lib/ffi-ncurses/keydefs.rb
77
- - lib/ffi-ncurses/mouse.rb
78
- - lib/ffi-ncurses/ord-shim.rb
88
+ - lib/ffi-ncurses/ord_shim.rb
89
+ - lib/ffi-ncurses/bool_wrappers.rb
90
+ - lib/ffi-ncurses/ncurses.rb
79
91
  - lib/ffi-ncurses/winstruct.rb
80
- has_rdoc: true
92
+ - lib/ffi-ncurses/widechars.rb
93
+ - lib/ffi-ncurses/panel.rb
94
+ - lib/ffi-ncurses/typedefs.rb
95
+ - lib/ffi-ncurses/darwin.rb
96
+ - lib/ffi-ncurses/acs.rb
97
+ - lib/ffi-ncurses/version.rb
98
+ - lib/ffi-ncurses/mouse.rb
99
+ - spec/attached_functions_spec.rb
81
100
  homepage: http://github.com/seanohalpin/ffi-ncurses
82
101
  licenses: []
83
-
84
102
  post_install_message:
85
- rdoc_options:
86
- - --main
87
- - README.rdoc
88
- require_paths:
103
+ rdoc_options: []
104
+ require_paths:
89
105
  - lib
90
- required_ruby_version: !ruby/object:Gem::Requirement
106
+ required_ruby_version: !ruby/object:Gem::Requirement
91
107
  none: false
92
- requirements:
93
- - - ">="
94
- - !ruby/object:Gem::Version
95
- segments:
96
- - 0
97
- version: "0"
98
- required_rubygems_version: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ! '>='
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
112
+ required_rubygems_version: !ruby/object:Gem::Requirement
99
113
  none: false
100
- requirements:
101
- - - ">="
102
- - !ruby/object:Gem::Version
103
- segments:
104
- - 0
105
- version: "0"
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
106
118
  requirements: []
107
-
108
- rubyforge_project: ffi-ncurses
109
- rubygems_version: 1.3.7
119
+ rubyforge_project:
120
+ rubygems_version: 1.8.10
110
121
  signing_key:
111
122
  specification_version: 3
112
- summary: FFI wrapper for ncurses
123
+ summary: An FFI wrapper around ncursesw 5.x for MRI Ruby 1.8.x, 1.9.x and JRuby.
113
124
  test_files: []
114
-
@@ -1,63 +0,0 @@
1
- #!/usr/bin/env ruby
2
- #
3
- # Sean O'Halpin, 2009-02-15
4
- #
5
- require 'ffi-ncurses'
6
- require 'ffi-ncurses/ord-shim' # for 1.8.6 compatibility
7
- include FFI::NCurses
8
-
9
- initscr
10
- begin
11
- # turn cursor off
12
- curs_set 0
13
-
14
- # initialize colour
15
- start_color
16
-
17
- # set up colour pairs
18
- # Background Foreground
19
- init_pair(0, Colour::BLACK, Colour::BLACK)
20
- init_pair(1, Colour::RED, Colour::BLACK)
21
- init_pair(2, Colour::GREEN, Colour::BLACK)
22
- init_pair(3, Colour::YELLOW, Colour::BLACK)
23
- init_pair(4, Colour::BLUE, Colour::BLACK)
24
- init_pair(5, Colour::MAGENTA, Colour::BLACK)
25
- init_pair(6, Colour::CYAN, Colour::BLACK)
26
- init_pair(7, Colour::WHITE, Colour::BLACK)
27
-
28
- init_pair(8, Colour::BLACK, Colour::BLACK)
29
- init_pair(9, Colour::BLACK, Colour::RED)
30
- init_pair(10, Colour::BLACK, Colour::GREEN)
31
- init_pair(11, Colour::BLACK, Colour::YELLOW)
32
- init_pair(12, Colour::BLACK, Colour::BLUE)
33
- init_pair(13, Colour::BLACK, Colour::MAGENTA)
34
- init_pair(14, Colour::BLACK, Colour::CYAN)
35
- init_pair(15, Colour::BLACK, Colour::WHITE)
36
-
37
- 0.upto(15) do |i|
38
- attr_set A_NORMAL, i, nil
39
- addch("A"[0].ord + i)
40
- end
41
-
42
- # add character and attribute together
43
- addch("Z"[0].ord | COLOR_PAIR(1)) # red
44
-
45
- # reset attribute and colour to default
46
- attr_set A_NORMAL, 0, nil
47
-
48
- # start new line
49
- addstr "\n"
50
-
51
- # how to add a single space
52
- addch(' '[0].ord)
53
- # or
54
- addstr(" ")
55
-
56
- addstr "Press any key"
57
-
58
- # display and pause for key press
59
- refresh
60
- ch = getch
61
- ensure
62
- endwin
63
- end
@@ -1,22 +0,0 @@
1
- #!/usr/bin/env ruby
2
- #
3
- # Sean O'Halpin, 2009-02-15
4
- #
5
- require 'ffi-ncurses'
6
- include FFI::NCurses
7
- begin
8
- initscr
9
- addstr "Default"
10
- getch
11
- addstr "curs_set 0"
12
- curs_set 0
13
- getch
14
- addstr "curs_set 1"
15
- curs_set 1
16
- getch
17
- addstr "curs_set 2"
18
- curs_set 2
19
- getch
20
- ensure
21
- FFI::NCurses.endwin
22
- end
@@ -1,24 +0,0 @@
1
- #!/usr/bin/env ruby
2
- #
3
- # Sean O'Halpin, 2009-02-15
4
- #
5
- require 'ffi-ncurses'
6
- include FFI::NCurses
7
- begin
8
- greeting = ARGV.shift || "World"
9
- stdscr = initscr
10
- raw
11
- keypad stdscr, 1
12
- noecho
13
- curs_set 0
14
- printw "Hello %s", :string, greeting
15
- move 3, 0
16
- addstr "Press any key to continue"
17
- refresh
18
- ch = getch
19
- printw "\nYou pressed %c (%d)", :char, ch, :int, ch
20
- refresh
21
- sleep 1
22
- ensure
23
- endwin
24
- end
@@ -1,14 +0,0 @@
1
- #!/usr/bin/env ruby
2
- #
3
- # Sean O'Halpin, 2009-02-15
4
- #
5
- require 'ffi'
6
- require 'ffi-ncurses'
7
-
8
- include FFI::NCurses
9
-
10
- initscr
11
- addstr 'Hello World'
12
- refresh
13
- getch
14
- endwin
@@ -1,25 +0,0 @@
1
- #!/usr/bin/env ruby
2
- #
3
- # Sean O'Halpin, 2009-02-15
4
- #
5
- require 'ffi-ncurses'
6
- include FFI::NCurses
7
- begin
8
- initscr
9
- raw
10
- keypad stdscr, 1
11
- noecho
12
- curs_set 0
13
- ch = 0
14
- name = "none"
15
- while ch != 27 # Escape
16
- clear
17
- addstr "Press any key (Escape to exit): "
18
- printw "name: %s dec: %d char: [%c]", :string, name, :int, ch, :int, ch
19
- refresh
20
- ch = getch
21
- name = keyname(ch)
22
- end
23
- ensure
24
- endwin
25
- end
@@ -1,24 +0,0 @@
1
- #!/usr/bin/env ruby
2
- #
3
- # Sean O'Halpin, 2009-02-15
4
- #
5
- require 'ffi-ncurses'
6
- include FFI::NCurses
7
-
8
- begin
9
- initscr
10
- curs_set 0
11
- win = newwin(6, 12, 15, 15)
12
- box(win, 0, 0)
13
- inner_win = newwin(4, 10, 16, 16)
14
- waddstr(inner_win, (["Hello window!"] * 5).join(' '))
15
- wrefresh(win)
16
- wrefresh(inner_win)
17
- ch = wgetch(inner_win)
18
-
19
- rescue Object => e
20
- endwin
21
- puts e
22
- ensure
23
- endwin
24
- end