Ruby 1.9.2 リファレンスマニュアル > ライブラリ一覧 > library curses
library curses
要約
Ruby の curses ライブラリ(以下、Ruby curses)は、C のプログラムから端末 の画面を制御するための curses ライブラリ(以下、C curses)を利用して、端 末に依存しない形式でテキストユーザインタフェースを構築するためのライブ ラリです。
C curses には、次のような実装があります。
Ruby curses を使ってテキストユーザインタフェース(以下、TUI)を 構築する流れは次のようになります。
- Curses.#init_screen で初期化を行います。
- Curses のモジュール関数を使い、 入力のエコーを無効にするなどの Ruby curses の設定を行います。
- Curses.#stdscr やそのサブウインドウを操作し、TUI を構築します。
- Curses.#getch や Curses.#getstr により、 ユーザからの入力を取得します。入力した情報に従って処理を行い、 そして、入力を待つということを繰り返します。
- 最後に Curses.#close_screen で終了処理を行います。
例: 画面中央に「Hello World!」と表示し、何か入力があると終了する。
require "curses" Curses.init_screen begin s = "Hello World!" Curses.setpos(Curses.lines / 2, Curses.cols / 2 - (s.length / 2)) Curses.addstr(s) Curses.refresh Curses.getch ensure Curses.close_screen end
例: 上記の例と同様だが、Curses モジュールを include する場合
require "curses" include Curses init_screen begin s = "Hello World!" setpos(lines / 2, cols / 2 - (s.length / 2)) addstr(s) refresh getch ensure close_screen end
なお、C curses を利用できない環境で Ruby をコンパイルしている場合、 Ruby curses は利用できません。 利用できない場合、require の時点で例外 LoadError が発生します。
foo:1:in `require': no such file to load -- curses (LoadError) from foo:1:in `<main>'
Ruby curses の操作によっては、 利用する C curses が提供していない機能を使うものがあります。 そのような操作を行った場合、例外 NotImplementError が発生します。
セーフレベル ($SAFE) が 4 の場合、いくつかの操作で例外 SecurityError を発生します。
クラスとモジュール
module Curses | Curses モジュールや Curses::Window クラスは、curses ライブラリを利用して、 端末に依存しない形式でテキストユーザインタフェースを作成できます。 curses ライブラリとは、 C のプログラムから端末のディスプレイ画面を制御するためのライブラリのことで、 次のような実装があります。 |
module Curses::Key | |
class Curses::MouseEvent | マウスの位置や状態などの情報を取得するためのクラスです。 ncurses を利用して curses ライブラリをインストールした場合にだけ、 本クラスが定義されています。 |
class Curses::Window |