Ruby 1.9.3 リファレンスマニュアル > ライブラリ一覧 > cursesライブラリ

library curses

要約

Ruby の curses ライブラリ(以下、Ruby curses)は、C のプログラムから端末 の画面を制御するための curses ライブラリ(以下、C curses)を利用して、端 末に依存しない形式でテキストユーザインタフェースを構築するためのライブ ラリです。

C curses には、次のような実装があります。

Ruby curses を使ってテキストユーザインタフェース(以下、TUI)を 構築する流れは次のようになります。

  1. Curses.#init_screen で初期化を行います。
  2. Curses のモジュール関数を使い、 入力のエコーを無効にするなどの Ruby curses の設定を行います。
  3. Curses.#stdscr やそのサブウインドウを操作し、TUI を構築します。
  4. Curses.#getchCurses.#getstr により、 ユーザからの入力を取得します。入力した情報に従って処理を行い、 そして、入力を待つということを繰り返します。
  5. 最後に 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 が提供していない機能を使うものがあります。 そのような操作を行った場合、例外 NotImplementedError が発生します。

セーフレベル ($SAFE) が 4 の場合、いくつかの操作で例外 SecurityError を発生します。

クラス

class Curses::MouseEvent

マウスの位置や状態などの情報を取得するためのクラスです。 ncurses を利用して curses ライブラリをインストールした場合にだけ、 本クラスが定義されています。

class Curses::Window

モジュール

module Curses

Curses モジュールや Curses::Window クラスは、curses ライブラリを利用して、 端末に依存しない形式でテキストユーザインタフェースを作成できます。 curses ライブラリとは、 C のプログラムから端末のディスプレイ画面を制御するためのライブラリのことで、 次のような実装があります。

module Curses::Key
library curses