Ruby 3.4 リファレンスマニュアル

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

io/console

端末上の入出力を制御するための機能を IO に追加するためのライブラリです。

irb

irb は Interactive Ruby の略です。 irb を使うと、Ruby の式を標準入力から簡単に入力・実行できます。

irb/color

irb の出力の色付け(シンタックスハイライト)を行うためのサブライブラリです。

irb/completion

irb の completion 機能を提供するライブラリです。

irb/context

irb の設定を扱うためのサブライブラリです。

irb/debug

debug ライブラリと連携して、irb からデバッガを起動するためのサブライブラリです。

irb/default_commands

irb で使用可能なコマンド(show_sourcels など)の定義を一括で読み込むためのサブライブラリです。Ruby 3.3 までの irb/extend-command に代わるものです。

irb/easter-egg

irb のイースターエッグ(Ruby のロゴのアスキーアート表示・アニメーション)を実装するサブライブラリです。

irb/frame

現在実行中のフレーム情報を取り扱うためのサブライブラリです。

irb/history

irb の入力履歴のファイルへの保存・読み込みを提供するサブライブラリです。

irb/init

irb の初期化をするためのライブラリです。

irb/input-method

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

irb/locale

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

irb/pager

irb の長い出力を less などの外部ページャで表示するためのサブライブラリです。

irb/ruby-lex

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

irb/statement

irb に入力されたひとつの文(式・irb のコマンド)を表すオブジェクトを提供するサブライブラリです。

irb/version

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

irb/workspace

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

irb/ws-for-case-2

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

pathname

パス名をオブジェクト指向らしく扱うためのライブラリです。

reline

GNU Readline 互換の行編集機能を純 Ruby で実装したライブラリです。

ripper

Ruby プログラムを解析するためのライブラリです。

ripper/filter

イベントドリブンスタイルで Ruby プログラムを加工するためのライブラリです。

ripper/lexer

Ruby プログラムをトークンのリストとして処理するためのライブラリです。

ripper/sexp

Ruby プログラムを S 式として扱うためのライブラリです。

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

Kernel#xmp