要約
Ruby のソースコードとその実行結果を、行ごとに交互に表示するためのライブラリです。irb を実行しなくても、使用することが出来ます。
実行結果を得るためには、Kernel#xmp と、XMP#puts を使った方法があります。どちらの場合も XMP がコンテキスト情報を保持するため、実行結果に差分はありません。(Binding を指定できるタイミングは違います)
関数(Kernel#xmp)を使って実行結果を得る
Kernel#xmp では、以下のように Ruby のソースコードを文字列として渡す事で実行結果を標準出力に表示します。
$ cat t.rb require "irb/xmp" xmp <<END foo = 1 foo END $ ruby t.rb foo = 1 ==>1 foo ==>1
XMP インスタンス(XMP#puts)を使って実行結果を得る
XMP#puts では、以下のように Ruby のソースコードを文字列として渡す事で実行結果を標準出力に表示します。
$ cat t.rb require "irb/xmp" xmp = XMP.new xmp.puts <<END foo = 1 foo END xmp.puts <<END foo END $ ruby t.rb foo = 1 ==>1 foo ==>1 foo ==>1
XMP がコンテキスト情報を管理しているため、変数 foo を 2 度目の呼び出しでも保持しています。Kernel#xmp でも同様の操作を行えます。
コンテキスト
XMP メソッド群のコンテキストは、呼び出す前のコンテキストで評価されます。明示的にコンテキストを指定するとそのコンテキストで評価します。
例:
xmp "foo", an_binding
[注意] マルチスレッドには対応していません。
注意
irb/xmp は内部で irb を使用する事で実行結果を表示しています (IRB::Context#prompt_mode で選択できる :XMP モードはそのために用意されています)。そのため、irb プロンプト中で使用可能なコマンドを実行した時に実行結果を得る事ができる点に注意してください。(例. nil が返る事を期待して conf を実行する)
クラス
XMP | Ruby のソースコードとその実行結果を、行ごとに交互に表示するためのクラスです。 |
同時にrequireされるライブラリ
irb | irb は Interactive Ruby の略です。 irb を使うと、Ruby の式を標準入力から簡単に入力・実行することができます。 |
irb/cmd/chws | irb 中の irb_current_working_workspace、irb_change_workspace コマンドのための拡張を定義したサブライブラリです。 |
irb/cmd/help | irb 中の help コマンドのための拡張を定義したサブライブラリです。 |
irb/cmd/load | irb 中の irb_load、irb_require、irb_source コマンドのための拡張を定義したサブライブラリです。 |
irb/cmd/nop | irb 中でコマンドを拡張する各ライブラリのベースになるクラスを扱うサブライブラリです。 |
irb/cmd/pushws | irb 中の irb_workspaces、irb_push_workspace、irb_pop_workspace コマンドのための拡張を定義したサブライブラリです。 |
irb/cmd/subirb | irb 中の irb、irb_jobs、irb_fg、irb_kill コマンドのための拡張を定義したサブライブラリです。 |
irb/context | irb の設定を扱うためのサブライブラリです。 |
irb/ext/change-ws | IRB::Context に irb 中での self を管理する機能を提供するサブライブラリです。 |
irb/ext/history | IRB::Context に実行結果の履歴を保持する機能を提供するサブライブラリです。 |
irb/ext/loader | load または require 時の irb のファイル読み込み機能(irb_load、 irb_require)を定義するサブライブラリです。 |
irb/ext/multi-irb | irb 中で複数の独立した irb を扱えるようにするためのサブライブラリです。 |
irb/ext/save-history | IRB::Context にヒストリの読み込み、保存の機能を提供するサブライブラリです。 |
irb/ext/tracer | irb への入力を評価する時に tracer ライブラリを使用してトレース出力を行う機能を提供するサブライブラリです。 |
irb/ext/use-loader | load または require 時に irb のファイル読み込み機能(irb_load、 irb_require)を使うように設定する機能を提供するサブライブラリです。 |
irb/ext/workspaces | IRB::Context に irb 中での self を管理する機能を提供するサブライブラリです。 |
irb/extend-command | irb を拡張するためのサブライブラリです。 |
irb/frame | 現在実行中のフレーム情報を取り扱うためのサブライブラリです。 |
irb/init | irb の初期化をするためのライブラリです。 |
irb/input-method | irb が入力を扱うためのサブライブラリです。 |
irb/locale | ライブラリ内部で使用します。 |
irb/magic-file | irb が扱う入力やファイル中のマジックコメントを正しく扱うためのサブライブラリです。 |
irb/ruby-lex | Ruby のソースコードを字句解析するためのサブライブラリです。 |
irb/ruby-token | Ruby のソースコード中の各種トークンを定義したサブライブラリです。 |
irb/src_encoding | irb が扱う入力やファイル中の規程のエンコーディングを正しく扱うためのサブライブラリです。 |
irb/version | irb ライブラリのバージョンを定義したサブライブラリです。 |
irb/workspace | irb 中で self を扱うためのサブライブラリです。 |
irb/ws-for-case-2 | ライブラリ内部で使用します。 |
readline | GNU Readline によるコマンドライン入力インタフェースを提供するライブラリです。 |
thread | このライブラリで提供されていたクラスは 2.3.0 で組み込みクラスになりました。互換性のためだけに残されています。 |
tracer | 実行トレース出力をとる機能を提供します。 |