library irb/xmp

[edit]

要約

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されるライブラリ

e2mmap

例外クラスに特定のエラーメッセージ用フォーマットを関連づけるためのライブラリです。

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/notifier

ライブラリ内部で使用します。

irb/output-method

irb が出力を扱うためのサブライブラリです。

irb/ruby-lex

Ruby のソースコードを字句解析するためのサブライブラリです。

irb/ruby-token

Ruby のソースコード中の各種トークンを定義したサブライブラリです。

irb/slex

Ruby のソースコードを字句解析するためのサブライブラリです。 irb/ruby-lex から使用されます。

irb/src_encoding

irb が扱う入力やファイル中の規程のエンコーディングを正しく扱うためのサブライブラリです。

irb/version

irb ライブラリのバージョンを定義したサブライブラリです。

irb/workspace

irb 中で self を扱うためのサブライブラリです。

irb/ws-for-case-2

ライブラリ内部で使用します。

readline

GNU Readline によるコマンドライン入力インタフェースを提供するライブラリです。

thread

このライブラリで提供されていたクラスは 2.3.0 で組み込みクラスになりました。互換性のためだけに残されています。

tracer

実行トレース出力をとる機能を提供します。

追加・再定義されるメソッド

Kernel#xmp