けいじゅ@日本ラショナルソフトウェアです.

In [ruby-list :8489 ] the message: "[ruby-list:8489] xmp ", on Jun/24
07:18(JST) GOTO Kentaro writes:

>ごとけんです

>ruby 初めての人に動作を説明するために小さいコードの
>動作を提示したいとき、p や eval.rb や irb を使えば
>良いのは分かってます。
>んが、 irb --symple-prompt の出力がちょっと気に
>入らないけど、こないだ irb をいぢる時間が無くて、
>どうせ簡単なコードにしか使わないやと思って
>上のような簡単なものを書いてみました。
>そしたら相当気に入ったので ^^; 見せびらかしに来ました ^^;;;

むむむ. 強力なライバル出現ですね(^^;;;;

># 要するに授業の板書とレジメの書き方を揃えるためなんです ^^;;
># もし irb で「ほぼ同じ出力」ができればそっちが良いに
># 決まってますが設定に挫折しました /(-_-;

実はirb-0.2.1.14では, 簡単に設定できるようになっていました(^^;;;

# 仕様が変わるかも知れないなと思っていたのでドキュメントにはありません
# でしたが... いい機会なので公開しちゃいます(^^;;;

irbrcに

IRB.conf[:PROMPT][:MY_PROMPT] = {
  :PROMPT_I => nil,
  :PROMPT_S => nil,
  :PROMPT_C => nil,
  :RETURN => "    ==>%s\n"
}
IRB.conf[:PROMPT_MODE] = :MY_PROMPT

と書いて下さい.

# モード名はシンボルで全て大文字にお願いします.

># あと、irb でオプションが --symple-prompt になってます。
>#                             ^
># --simple-prompt ですよね。もう直ってますか? 
>     ^

げげげ.... irb-0.2.1.15では直しました(in.comingにおきました). 昔のオプ
ションはなくしました(^^;;;;

# 最近この手の問題が多いなあ(*^^*

あと, 上記の.irbrcのようにしちゃうと, 他のプロンプト表示が使えなくなり
ますので, ユーザ定義のプロンプトで起動するオプションもつけました.

irb --prompt my-prompt

# モード名は大文字子文字の区別無しで"-"は"_"に置き換えます.

後はREADMEにプロンプトの設定法を加えました:

--- ここからREADME(プロンプトの設定部分)
5.1 プロンプトの設定

プロンプトをカスタマイズしたい時には, 

IRB.conf[:PROMPT]

を用います. 例えば, .irbrcの中で下のような式を記述します:

IRB.conf[:PROMPT][:MY_PROMPT] = { # プロンプトモードの名前
  :PROMPT_I => nil,		  # 通常のプロンプト
  :PROMPT_S => nil,		  # 文字列などの継続行のプロンプト
  :PROMPT_C => nil,		  # 式が継続している時のプロンプト
  :RETURN => "    ==>%s\n"	  # リターン時のプロンプト
}

プロンプトモードを指定したい時には,

irb --prompt my-prompt

でそのプロンプトモードで起動されます. または, .irbrcに下式を記述しても
OKです.

IRB.conf[:PROMPT_MODE] = :MY_PROMPT

PROMPT_I, PROMPT_S, PROMPT_Cは, フォーマットを指定します.

  %N	起動しているコマンド名が出力される.
  %m	mainオブジェクト(self)がto_sで出力される.
  %M	mainオブジェクト(self)がinspectされて出力される.
  %l	文字列中のタイプを表す(", ', /, ], `]'は%wの中の時)
  %NNi	インデントのレベルを表す. NNは数字が入りprintfの%NNdと同じ. 省
	略可能
  %NNn	行番号を表します.
  %%    %

例えば, デフォルトのプロンプトモードは:

IRB.conf[:PROMPT_MODE][:DEFAULT] = {
      :PROMPT_I => "%N(%m):%03n:%i> ",
      :PROMPT_S => "%N(%m):%03n:%i%l ",
      :PROMPT_C => "%N(%m):%03n:%i* ",
      :RETURN => "%s\n"
} 

となっています.

RETURNは, 現在のところprintf形式です. 将来仕様が変わるかも知れません.

__
................................石塚 圭樹@日本ラショナルソフトェア...
----------------------------------->> e-mail: keiju / rational.com <<---