irb 1.1.1 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +5 -0
- data/README.md +3 -3
- data/doc/irb/irb-tools.rd.ja +184 -0
- data/doc/irb/irb.rd.ja +411 -0
- data/irb.gemspec +58 -1
- data/lib/irb.rb +106 -35
- data/lib/irb/cmd/fork.rb +1 -1
- data/lib/irb/cmd/help.rb +9 -5
- data/lib/irb/color.rb +233 -0
- data/lib/irb/completion.rb +126 -33
- data/lib/irb/context.rb +105 -65
- data/lib/irb/ext/history.rb +47 -9
- data/lib/irb/ext/multi-irb.rb +7 -7
- data/lib/irb/ext/save-history.rb +17 -5
- data/lib/irb/ext/tracer.rb +14 -1
- data/lib/irb/ext/use-loader.rb +3 -0
- data/lib/irb/extend-command.rb +70 -48
- data/lib/irb/frame.rb +12 -7
- data/lib/irb/init.rb +30 -20
- data/lib/irb/input-method.rb +108 -3
- data/lib/irb/inspector.rb +12 -2
- data/lib/irb/lc/error.rb +55 -16
- data/lib/irb/lc/help-message +9 -6
- data/lib/irb/lc/ja/error.rb +55 -14
- data/lib/irb/lc/ja/help-message +9 -6
- data/lib/irb/locale.rb +5 -1
- data/lib/irb/notifier.rb +12 -8
- data/lib/irb/output-method.rb +6 -6
- data/lib/irb/ruby-lex.rb +345 -1039
- data/lib/irb/ruby_logo.aa +38 -0
- data/lib/irb/version.rb +2 -2
- data/lib/irb/workspace.rb +58 -20
- data/man/irb.1 +207 -0
- metadata +21 -6
- data/.gitignore +0 -9
- data/.travis.yml +0 -6
- data/lib/irb/ruby-token.rb +0 -267
- data/lib/irb/slex.rb +0 -282
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 30fc838baf1c1769c8ff1b3cc064e8c443dceb16fb997d6f7e53845b981990dd
|
4
|
+
data.tar.gz: 48abb8ba8d3af2b3705cdbaddb47fc74dcaece6b5f074f655dfb426002e15c3c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 29150c7100e2bc250281771a7c268073fd80c49fc80244945e7c067ff3cd4ff02cf09aa5b0f0efb2c701e4e62291c47978375293622e7deddeb64c11453eca42
|
7
|
+
data.tar.gz: e5216092d990b27d4390f2b80470edb7c2aefb955f4ef6ffa118270335761f15df5acbdcc6e00205e930be0d8b596aae50cc88249675cacb320b62adec91672e
|
data/Gemfile
CHANGED
@@ -3,3 +3,8 @@ source "https://rubygems.org"
|
|
3
3
|
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
|
4
4
|
|
5
5
|
gemspec
|
6
|
+
|
7
|
+
# TODO: remove this when reline with `Reline::Unicode.escape_for_print` is released.
|
8
|
+
if Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.7.0')
|
9
|
+
gem "reline", github: "ruby/reline"
|
10
|
+
end
|
data/README.md
CHANGED
@@ -31,9 +31,9 @@ $ irb
|
|
31
31
|
irb(main):001:0> 1+2
|
32
32
|
#=> 3
|
33
33
|
irb(main):002:0> class Foo
|
34
|
-
irb(main):003:1>
|
35
|
-
irb(main):004:2>
|
36
|
-
irb(main):005:2>
|
34
|
+
irb(main):003:1> def foo
|
35
|
+
irb(main):004:2> print 1
|
36
|
+
irb(main):005:2> end
|
37
37
|
irb(main):006:1> end
|
38
38
|
#=> nil
|
39
39
|
```
|
@@ -0,0 +1,184 @@
|
|
1
|
+
irb関連おまけコマンドとライブラリ
|
2
|
+
$Release Version: 0.7.1 $
|
3
|
+
$Revision$
|
4
|
+
by Keiju ISHITSUKA(Nihon Rational Co.,Ltd.)
|
5
|
+
|
6
|
+
=begin
|
7
|
+
|
8
|
+
:コマンド:
|
9
|
+
* rtags -- ruby tags command
|
10
|
+
|
11
|
+
:関数ライブラリ:
|
12
|
+
* xmp -- irb version of gotoken xmp-function
|
13
|
+
|
14
|
+
:クラスライブラリ:
|
15
|
+
* frame.rb -- frame tracer
|
16
|
+
* completion.rb -- irb completor
|
17
|
+
|
18
|
+
= rtags
|
19
|
+
|
20
|
+
rtagsはemacs及びvi用の, TAGファイルをつくるコマンドです.
|
21
|
+
|
22
|
+
== 使い方
|
23
|
+
|
24
|
+
rtags [-vi] file....
|
25
|
+
|
26
|
+
カレントディレクトリにemacs用のTAGSファイルができます. -viオプションを
|
27
|
+
つけた時にはvi用のtagsファイルを作成します.
|
28
|
+
|
29
|
+
emacsの場合, 通常のetags.elがそのまま使えます. 検索可能なのは,
|
30
|
+
|
31
|
+
* クラス
|
32
|
+
* メソッド
|
33
|
+
* 特異メソッド
|
34
|
+
* alias
|
35
|
+
* attrで宣言されたアクセサ(パラメータがシンボルか文字列リテラルに限る)
|
36
|
+
* attr_XXXで宣言されたアクセサ(パラメータがシンボルか文字列リテラルに限る)
|
37
|
+
|
38
|
+
です.
|
39
|
+
|
40
|
+
Cなどで使っているのと違うのは, コンプリーションに関する部分で,
|
41
|
+
|
42
|
+
関数名は,
|
43
|
+
|
44
|
+
関数名(
|
45
|
+
|
46
|
+
クラスは,
|
47
|
+
|
48
|
+
::クラス名::....::クラス名
|
49
|
+
|
50
|
+
メソッドは,
|
51
|
+
|
52
|
+
::クラス名::....::クラス名#メソッド名
|
53
|
+
|
54
|
+
特異メソッド(クラスメソッド)は
|
55
|
+
|
56
|
+
::クラス名::....::クラス名.メソッド名
|
57
|
+
|
58
|
+
でコンプリーションを行なうところです.
|
59
|
+
|
60
|
+
= xmp.rb
|
61
|
+
|
62
|
+
ごとけんxmpの上位互換バージョンです. ただ, 非常に重いのでごとけんxmpで
|
63
|
+
は対応できない時に, 使用すると良いでしょう.
|
64
|
+
|
65
|
+
== 使い方
|
66
|
+
|
67
|
+
=== 関数として使う.
|
68
|
+
|
69
|
+
require "irb/xmp"
|
70
|
+
xmp <<END
|
71
|
+
foo = 1
|
72
|
+
foo
|
73
|
+
END
|
74
|
+
---
|
75
|
+
foo = 1
|
76
|
+
==>1
|
77
|
+
foo
|
78
|
+
==>1
|
79
|
+
|
80
|
+
=== XMPインスタンスを用いる.
|
81
|
+
|
82
|
+
この場合は, XMPがコンテキスト情報を持つので, 変数の値などを保持してい
|
83
|
+
ます.
|
84
|
+
|
85
|
+
require "irb/xmp"
|
86
|
+
xmp = XMP.new
|
87
|
+
xmp.puts <<END
|
88
|
+
foo = 1
|
89
|
+
foo
|
90
|
+
END
|
91
|
+
xmp.puts <<END
|
92
|
+
foo
|
93
|
+
END
|
94
|
+
===
|
95
|
+
foo = 1
|
96
|
+
==>1
|
97
|
+
foo
|
98
|
+
==>1
|
99
|
+
foo
|
100
|
+
==>1
|
101
|
+
|
102
|
+
== コンテキストに関して
|
103
|
+
|
104
|
+
XMPメソッド群のコンテキストは, 呼び出す前のコンテキストで評価されます.
|
105
|
+
明示的にコンテキストを指定するとそのコンテキストで評価します.
|
106
|
+
|
107
|
+
例:
|
108
|
+
|
109
|
+
xmp "foo", an_binding
|
110
|
+
|
111
|
+
:注:
|
112
|
+
マルチスレッドには対応していません.
|
113
|
+
|
114
|
+
= frame.rb
|
115
|
+
現在実行中のフレーム情報を取り扱うためのクラスです.
|
116
|
+
|
117
|
+
* IRB::Frame.top(n = 0)
|
118
|
+
上からn番目のコンテキストを取り出します. nは0が最上位になります.
|
119
|
+
* IRB::Frame.bottom(n = 0)
|
120
|
+
下からn番目のコンテキストを取り出します. nは0が最下位になります.
|
121
|
+
* IRB::Frame.sender
|
122
|
+
センダになっているオブジェクトを取り出します. センダとは, そのメソッ
|
123
|
+
ドを呼び出した側のselfのことです.
|
124
|
+
|
125
|
+
:注:
|
126
|
+
set_trace_funcを用いてRubyの実行をトレースしています. マルチスレッドに
|
127
|
+
は対応していません.
|
128
|
+
|
129
|
+
= completion.rb
|
130
|
+
irbのcompletion機能を提供するものです.
|
131
|
+
|
132
|
+
== 使い方
|
133
|
+
|
134
|
+
% irb -r irb/completion
|
135
|
+
|
136
|
+
とするか, ~/.irbrc 中に
|
137
|
+
|
138
|
+
require "irb/completion"
|
139
|
+
|
140
|
+
を入れてください. irb実行中に require "irb/completion" してもよいです.
|
141
|
+
|
142
|
+
irb実行中に (TAB) を押すとコンプレーションします.
|
143
|
+
|
144
|
+
トップレベルで(TAB)を押すとすべての構文要素, クラス, メソッドの候補がで
|
145
|
+
ます. 候補が唯一ならば完全に補完します.
|
146
|
+
|
147
|
+
irb(main):001:0> in
|
148
|
+
in inspect instance_eval
|
149
|
+
include install_alias_method instance_of?
|
150
|
+
initialize install_aliases instance_variables
|
151
|
+
irb(main):001:0> inspect
|
152
|
+
"main"
|
153
|
+
irb(main):002:0> foo = Object.new
|
154
|
+
#<Object:0x4027146c>
|
155
|
+
|
156
|
+
((|変数名.|))の後に(TAB)を押すと, そのオブジェクトのメソッド一覧がでま
|
157
|
+
す.
|
158
|
+
|
159
|
+
irb(main):003:0> foo.
|
160
|
+
foo.== foo.frozen? foo.protected_methods
|
161
|
+
foo.=== foo.hash foo.public_methods
|
162
|
+
foo.=~ foo.id foo.respond_to?
|
163
|
+
foo.__id__ foo.inspect foo.send
|
164
|
+
foo.__send__ foo.instance_eval foo.singleton_methods
|
165
|
+
foo.class foo.instance_of? foo.taint
|
166
|
+
foo.clone foo.instance_variables foo.tainted?
|
167
|
+
foo.display foo.is_a? foo.to_a
|
168
|
+
foo.dup foo.kind_of? foo.to_s
|
169
|
+
foo.eql? foo.method foo.type
|
170
|
+
foo.equal? foo.methods foo.untaint
|
171
|
+
foo.extend foo.nil?
|
172
|
+
foo.freeze foo.private_methods
|
173
|
+
|
174
|
+
=end
|
175
|
+
|
176
|
+
% Begin Emacs Environment
|
177
|
+
% Local Variables:
|
178
|
+
% mode: text
|
179
|
+
% comment-column: 0
|
180
|
+
% comment-start: "%"
|
181
|
+
% comment-end: "\n"
|
182
|
+
% End:
|
183
|
+
%
|
184
|
+
|
data/doc/irb/irb.rd.ja
ADDED
@@ -0,0 +1,411 @@
|
|
1
|
+
irb -- interactive ruby
|
2
|
+
$Release Version: 0.9.5 $
|
3
|
+
$Revision$
|
4
|
+
by Keiju ISHITSUKA(keiju@ruby-lang.org)
|
5
|
+
=begin
|
6
|
+
= irbとは?
|
7
|
+
|
8
|
+
irbはinteractive rubyの略です. rubyの式を標準入力から簡単に入力/実行する
|
9
|
+
ためのツールです.
|
10
|
+
|
11
|
+
= 起動
|
12
|
+
|
13
|
+
% irb
|
14
|
+
|
15
|
+
で行ないます.
|
16
|
+
|
17
|
+
= 使い方
|
18
|
+
|
19
|
+
irbの使い方は, Rubyさえ知っていればいたって簡単です. 基本的には irb と
|
20
|
+
いうコマンドを実行するだけです. irbを実行すると, 以下のようなプロンプ
|
21
|
+
トが表れてきます. 後は, rubyの式を入れて下さい. 式が完結した時点で実行
|
22
|
+
されます.
|
23
|
+
|
24
|
+
dim% irb
|
25
|
+
irb(main):001:0> 1+2
|
26
|
+
3
|
27
|
+
irb(main):002:0> class Foo
|
28
|
+
irb(main):003:1> def foo
|
29
|
+
irb(main):004:2> print 1
|
30
|
+
irb(main):005:2> end
|
31
|
+
irb(main):006:1> end
|
32
|
+
nil
|
33
|
+
irb(main):007:0>
|
34
|
+
|
35
|
+
また, irbはReadlineモジュールにも対応しています. Readlineモジュールが
|
36
|
+
インストールされている時には, それを使うのが標準の動作になります.
|
37
|
+
|
38
|
+
= コマンドオプション
|
39
|
+
|
40
|
+
irb.rb [options] file_name opts
|
41
|
+
options:
|
42
|
+
-f ~/.irbrc を読み込まない.
|
43
|
+
-m bcモード(分数, 行列の計算ができる)
|
44
|
+
-d $DEBUG をtrueにする(ruby -d と同じ)
|
45
|
+
-Kc ruby -Kcと同じ
|
46
|
+
-r load-module ruby -r と同じ.
|
47
|
+
--verbose これから実行する行を表示する(デフォルト)
|
48
|
+
--noverbose これから実行する行を表示しない
|
49
|
+
--echo 実行結果を表示する(デフォルト)
|
50
|
+
--noecho 実行結果を表示しない
|
51
|
+
--inspect 結果出力にinspectを用いる(bcモード以外はデフォルト).
|
52
|
+
--noinspect 結果出力にinspectを用いない.
|
53
|
+
--singleline シングルラインエディタを利用する.
|
54
|
+
--nosingleline シングルラインエディタを利用しない. デフォルトの動
|
55
|
+
作は, inf-ruby-mode以外でシングルラインエディタを利
|
56
|
+
用しようとする.
|
57
|
+
--colorize 色付けを利用する.
|
58
|
+
--nocolorize 色付けを利用しない.
|
59
|
+
--prompt prompt-mode
|
60
|
+
--prompt-mode prompt-mode
|
61
|
+
プロンプトモードを切替えます. 現在定義されているプ
|
62
|
+
ロンプトモードは, default, simple, xmp, inf-rubyが
|
63
|
+
用意されています. デフォルトはdefaultプロンプトモー
|
64
|
+
ドになっています.
|
65
|
+
|
66
|
+
--inf-ruby-mode emacsのinf-ruby-mode用のプロンプト表示を行なう. 特
|
67
|
+
に指定がない限り, ラインエディタは使わなくなる.
|
68
|
+
--simple-prompt
|
69
|
+
非常にシンプルなプロンプトを用いるモードです.
|
70
|
+
--noprompt プロンプト表示を行なわない.
|
71
|
+
--tracer コマンド実行時にトレースを行なう.
|
72
|
+
--back-trace-limit n
|
73
|
+
バックトレース表示をバックトレースの頭から n, 後ろ
|
74
|
+
からnだけ行なう. デフォルトは16
|
75
|
+
-v, --version irbのバージョンを表示する
|
76
|
+
|
77
|
+
= コンフィギュレーション
|
78
|
+
|
79
|
+
irb起動時に``~/.irbrc''を読み込みます. もし存在しない場合は,
|
80
|
+
``.irbrc'', ``irb.rc'', ``_irbrc'', ``$irbrc''の順にloadを試みます.
|
81
|
+
|
82
|
+
オプションを設定する代わりに, 以下のコマンドでもデフォルトの動作を設定
|
83
|
+
できます.
|
84
|
+
|
85
|
+
IRB.conf[:IRB_NAME]="irb"
|
86
|
+
IRB.conf[:USE_TRACER]=false
|
87
|
+
IRB.conf[:USE_LOADER]=false
|
88
|
+
IRB.conf[:IGNORE_SIGINT]=true
|
89
|
+
IRB.conf[:IGNORE_EOF]=false
|
90
|
+
IRB.conf[:INSPECT_MODE]=nil
|
91
|
+
IRB.conf[:IRB_RC] = nil
|
92
|
+
IRB.conf[:BACK_TRACE_LIMIT]=16
|
93
|
+
IRB.conf[:USE_LOADER] = false
|
94
|
+
IRB.conf[:USE_SINGLELINE] = nil
|
95
|
+
IRB.conf[:USE_TRACER] = false
|
96
|
+
IRB.conf[:IGNORE_SIGINT] = true
|
97
|
+
IRB.conf[:IGNORE_EOF] = false
|
98
|
+
IRB.conf[:PROMPT_MODE] = :DEFAULT
|
99
|
+
IRB.conf[:PROMPT] = {...}
|
100
|
+
IRB.conf[:VERBOSE]=true
|
101
|
+
|
102
|
+
== プロンプトの設定
|
103
|
+
|
104
|
+
プロンプトをカスタマイズしたい時には,
|
105
|
+
|
106
|
+
IRB.conf[:PROMPT]
|
107
|
+
|
108
|
+
を用います. 例えば, .irbrcの中で下のような式を記述します:
|
109
|
+
|
110
|
+
IRB.conf[:PROMPT][:MY_PROMPT] = { # プロンプトモードの名前
|
111
|
+
:PROMPT_I => nil, # 通常のプロンプト
|
112
|
+
:PROMPT_N => nil, # 継続行のプロンプト
|
113
|
+
:PROMPT_S => nil, # 文字列などの継続行のプロンプト
|
114
|
+
:PROMPT_C => nil, # 式が継続している時のプロンプト
|
115
|
+
:RETURN => " ==>%s\n" # リターン時のプロンプト
|
116
|
+
}
|
117
|
+
|
118
|
+
プロンプトモードを指定したい時には,
|
119
|
+
|
120
|
+
irb --prompt my-prompt
|
121
|
+
|
122
|
+
でそのプロンプトモードで起動されます. または, .irbrcに下式を記述しても
|
123
|
+
OKです.
|
124
|
+
|
125
|
+
IRB.conf[:PROMPT_MODE] = :MY_PROMPT
|
126
|
+
|
127
|
+
PROMPT_I, PROMPT_N, PROMPT_S, PROMPT_Cは, フォーマットを指定します.
|
128
|
+
|
129
|
+
%N 起動しているコマンド名が出力される.
|
130
|
+
%m mainオブジェクト(self)がto_sで出力される.
|
131
|
+
%M mainオブジェクト(self)がinspectされて出力される.
|
132
|
+
%l 文字列中のタイプを表す(", ', /, ], `]'は%wの中の時)
|
133
|
+
%NNi インデントのレベルを表す. NNは数字が入りprintfの%NNdと同じ. 省
|
134
|
+
略可能
|
135
|
+
%NNn 行番号を表します.
|
136
|
+
%% %
|
137
|
+
|
138
|
+
例えば, デフォルトのプロンプトモードは:
|
139
|
+
|
140
|
+
IRB.conf[:PROMPT_MODE][:DEFAULT] = {
|
141
|
+
:PROMPT_I => "%N(%m):%03n:%i> ",
|
142
|
+
:PROMPT_N => "%N(%m):%03n:%i> ",
|
143
|
+
:PROMPT_S => "%N(%m):%03n:%i%l ",
|
144
|
+
:PROMPT_C => "%N(%m):%03n:%i* ",
|
145
|
+
:RETURN => "%s\n"
|
146
|
+
}
|
147
|
+
|
148
|
+
となっています.
|
149
|
+
|
150
|
+
RETURNは, 現在のところprintf形式です. 将来仕様が変わるかも知れません.
|
151
|
+
|
152
|
+
== サブirbの設定
|
153
|
+
|
154
|
+
コマンドラインオプションおよびIRB.confは(サブ)irb起動時のデフォルトの
|
155
|
+
設定を決めるもので, `5. コマンド'にあるconfで個別の(サブ)irbの設定がで
|
156
|
+
きるようになっています.
|
157
|
+
|
158
|
+
IRB.conf[:IRB_RC]にprocが設定されていると, サブirbを起動する時にその
|
159
|
+
procをirbのコンテキストを引数として呼び出します. これによって個別のサ
|
160
|
+
ブirbごとに設定を変えることができるようになります.
|
161
|
+
|
162
|
+
|
163
|
+
= コマンド
|
164
|
+
|
165
|
+
irb拡張コマンドは, 簡単な名前と頭に`irb_'をつけた名前と両方定義されて
|
166
|
+
います. これは, 簡単な名前がoverrideされた時のためです.
|
167
|
+
|
168
|
+
--- exit, quit, irb_exit
|
169
|
+
終了する.
|
170
|
+
サブirbの場合, そのサブirbを終了する.
|
171
|
+
|
172
|
+
--- conf, irb_context
|
173
|
+
irbの現在の設定を表示する. 設定の変更は, confにメッセージを送るこ
|
174
|
+
とによって行なえる.
|
175
|
+
|
176
|
+
--- conf.eval_history = N
|
177
|
+
実行結果のヒストリ機能の設定.
|
178
|
+
nnは整数かnilで nn>0 であればその数だけヒストリにためる。nn==0の時は
|
179
|
+
無制限に記憶する、nilだとヒストリ機能はやめる(デフォルト).
|
180
|
+
|
181
|
+
--- Conf.back_trace_limit
|
182
|
+
バックトレース表示をバックトレースの頭からn, 後ろからnだけ行なう.
|
183
|
+
デフォルトは16
|
184
|
+
|
185
|
+
--- conf.ignore_eof = true/false
|
186
|
+
^Dが入力された時の動作を設定する. trueの時は^Dを無視する, falseの
|
187
|
+
時はirbを終了する.
|
188
|
+
|
189
|
+
--- conf.ignore_sigint= true/false
|
190
|
+
^Cが入力された時の動作を設定する. false時は, irbを終了する. trueの
|
191
|
+
時の動作は以下のようになる:
|
192
|
+
入力中: これまで入力したものをキャンセルしトップレベルに戻る.
|
193
|
+
実行中: 実行を中止する.
|
194
|
+
|
195
|
+
--- conf.inf_ruby_mode = true/false
|
196
|
+
inf-ruby-mode用のプロンプト表示を行なう. デフォルトはfalse. 特に指定
|
197
|
+
がない限り, ラインエディタは使わなくなる.
|
198
|
+
|
199
|
+
--- conf.inspect_mode = true/false/nil
|
200
|
+
インスペクトモードを設定する.
|
201
|
+
true: インスペクトして表示する.
|
202
|
+
false: 通常のprintで表示する.
|
203
|
+
nil: 通常モードであれば, inspect modeとなり, mathモードの時は, non
|
204
|
+
inspect modeとなる.
|
205
|
+
|
206
|
+
--- conf.use_loader = true/false
|
207
|
+
load/require時にirbのfile読み込み機能を用いるモードのスイッチ(デフォ
|
208
|
+
ルトは用いない). このモードはIRB全体に反映される.
|
209
|
+
|
210
|
+
--- conf.prompt_c
|
211
|
+
ifの直後など, 行が継続している時のプロンプト.
|
212
|
+
|
213
|
+
--- conf.prompt_i
|
214
|
+
通常のプロンプト.
|
215
|
+
|
216
|
+
--- conf.prompt_s
|
217
|
+
文字列中などを表すプロンプト.
|
218
|
+
|
219
|
+
--- conf.rc
|
220
|
+
~/.irbrcを読み込んだかどうか?
|
221
|
+
|
222
|
+
--- conf.use_prompt = true/false
|
223
|
+
プロンプト表示するかどうか? デフォルトではプロンプトを表示する.
|
224
|
+
|
225
|
+
--- conf.use_multiline = true/false/nil
|
226
|
+
マルチラインエディタを使うかどうか?
|
227
|
+
true: マルチラインエディタを使う.
|
228
|
+
false: マルチラインエディタを使わない.
|
229
|
+
nil: (デフォルト)inf-ruby-mode以外でマルチラインエディタを利用しよう
|
230
|
+
とする.
|
231
|
+
|
232
|
+
--- conf.use_singleline = true/false/nil
|
233
|
+
シングルラインエディタを使うかどうか?
|
234
|
+
true: シングルラインエディタを使う.
|
235
|
+
false: シングルラインエディタを使わない.
|
236
|
+
nil: (デフォルト)inf-ruby-modeとマルチラインエディタ以外でシングルラ
|
237
|
+
インエディタを利用しようとする.
|
238
|
+
#
|
239
|
+
#--- conf.verbose=T/F
|
240
|
+
# irbからいろいろなメッセージを出力するか?
|
241
|
+
|
242
|
+
--- cws, chws, irb_cws, irb_chws, irb_change_workspace [obj]
|
243
|
+
objをselfとする. objが省略されたときは, home workspace, すなわち
|
244
|
+
irbを起動したときのmain objectをselfとする.
|
245
|
+
|
246
|
+
--- pushws, irb_pushws, irb_push_workspace [obj]
|
247
|
+
UNIXシェルコマンドのpushdと同様.
|
248
|
+
|
249
|
+
--- popws, irb_popws, irb_pop_workspace
|
250
|
+
UNIXシェルコマンドのpopdと同様.
|
251
|
+
|
252
|
+
--- irb [obj]
|
253
|
+
サブirbを立ちあげる. objが指定された時は, そのobjをselfとする.
|
254
|
+
|
255
|
+
--- jobs, irb_jobs
|
256
|
+
サブirbのリスト
|
257
|
+
|
258
|
+
--- fg n, irb_fg n
|
259
|
+
指定したサブirbにスイッチする. nは, 次のものを指定する.
|
260
|
+
|
261
|
+
irb番号
|
262
|
+
スレッド
|
263
|
+
irbオブジェクト
|
264
|
+
self(irb objで起動した時のobj)
|
265
|
+
|
266
|
+
--- kill n, irb_kill n
|
267
|
+
サブirbをkillする. nはfgと同じ.
|
268
|
+
|
269
|
+
--- source, irb_source path
|
270
|
+
UNIXシェルコマンドのsourceと似ている. 現在の環境上でpath内のスクリ
|
271
|
+
プトを評価する.
|
272
|
+
|
273
|
+
--- irb_load path, prev
|
274
|
+
|
275
|
+
Rubyのloadのirb版.
|
276
|
+
|
277
|
+
= システム変数
|
278
|
+
|
279
|
+
--- _
|
280
|
+
前の計算の実行結果を覚えている(ローカル変数).
|
281
|
+
--- __
|
282
|
+
実行結果の履歴を覚えている.
|
283
|
+
__[line_no]で、その行で実行した結果を得ることができる. line_noが負の
|
284
|
+
時には、最新の結果から-line_no前の結果を得ることができる.
|
285
|
+
|
286
|
+
= 使用例
|
287
|
+
|
288
|
+
以下のような感じです.
|
289
|
+
|
290
|
+
dim% ruby irb.rb
|
291
|
+
irb(main):001:0> irb # サブirbの立ちあげ
|
292
|
+
irb#1(main):001:0> jobs # サブirbのリスト
|
293
|
+
#0->irb on main (#<Thread:0x400fb7e4> : stop)
|
294
|
+
#1->irb#1 on main (#<Thread:0x40125d64> : running)
|
295
|
+
nil
|
296
|
+
irb#1(main):002:0> fg 0 # jobのスイッチ
|
297
|
+
nil
|
298
|
+
irb(main):002:0> class Foo;end
|
299
|
+
nil
|
300
|
+
irb(main):003:0> irb Foo # Fooをコンテキストしてirb
|
301
|
+
# 立ちあげ
|
302
|
+
irb#2(Foo):001:0> def foo # Foo#fooの定義
|
303
|
+
irb#2(Foo):002:1> print 1
|
304
|
+
irb#2(Foo):003:1> end
|
305
|
+
nil
|
306
|
+
irb#2(Foo):004:0> fg 0 # jobをスイッチ
|
307
|
+
nil
|
308
|
+
irb(main):004:0> jobs # jobのリスト
|
309
|
+
#0->irb on main (#<Thread:0x400fb7e4> : running)
|
310
|
+
#1->irb#1 on main (#<Thread:0x40125d64> : stop)
|
311
|
+
#2->irb#2 on Foo (#<Thread:0x4011d54c> : stop)
|
312
|
+
nil
|
313
|
+
irb(main):005:0> Foo.instance_methods # Foo#fooがちゃんと定義さ
|
314
|
+
# れている
|
315
|
+
["foo"]
|
316
|
+
irb(main):006:0> fg 2 # jobをスイッチ
|
317
|
+
nil
|
318
|
+
irb#2(Foo):005:0> def bar # Foo#barを定義
|
319
|
+
irb#2(Foo):006:1> print "bar"
|
320
|
+
irb#2(Foo):007:1> end
|
321
|
+
nil
|
322
|
+
irb#2(Foo):010:0> Foo.instance_methods
|
323
|
+
["bar", "foo"]
|
324
|
+
irb#2(Foo):011:0> fg 0
|
325
|
+
nil
|
326
|
+
irb(main):007:0> f = Foo.new
|
327
|
+
#<Foo:0x4010af3c>
|
328
|
+
irb(main):008:0> irb f # Fooのインスタンスでirbを
|
329
|
+
# 立ちあげる.
|
330
|
+
irb#3(#<Foo:0x4010af3c>):001:0> jobs
|
331
|
+
#0->irb on main (#<Thread:0x400fb7e4> : stop)
|
332
|
+
#1->irb#1 on main (#<Thread:0x40125d64> : stop)
|
333
|
+
#2->irb#2 on Foo (#<Thread:0x4011d54c> : stop)
|
334
|
+
#3->irb#3 on #<Foo:0x4010af3c> (#<Thread:0x4010a1e0> : running)
|
335
|
+
nil
|
336
|
+
irb#3(#<Foo:0x4010af3c>):002:0> foo # f.fooの実行
|
337
|
+
nil
|
338
|
+
irb#3(#<Foo:0x4010af3c>):003:0> bar # f.barの実行
|
339
|
+
barnil
|
340
|
+
irb#3(#<Foo:0x4010af3c>):004:0> kill 1, 2, 3# jobのkill
|
341
|
+
nil
|
342
|
+
irb(main):009:0> jobs
|
343
|
+
#0->irb on main (#<Thread:0x400fb7e4> : running)
|
344
|
+
nil
|
345
|
+
irb(main):010:0> exit # 終了
|
346
|
+
dim%
|
347
|
+
|
348
|
+
= 使用上の制限
|
349
|
+
|
350
|
+
irbは, 評価できる時点(式が閉じた時点)での逐次実行を行ないます. したがっ
|
351
|
+
て, rubyを直接使った時と, 若干異なる動作を行なう場合があります.
|
352
|
+
|
353
|
+
現在明らかになっている問題点を説明します.
|
354
|
+
|
355
|
+
== ローカル変数の宣言
|
356
|
+
|
357
|
+
rubyでは, 以下のプログラムはエラーになります.
|
358
|
+
|
359
|
+
eval "foo = 0"
|
360
|
+
foo
|
361
|
+
--
|
362
|
+
-:2: undefined local variable or method `foo' for #<Object:0x40283118> (NameError)
|
363
|
+
---
|
364
|
+
NameError
|
365
|
+
|
366
|
+
ところが, irbを用いると
|
367
|
+
|
368
|
+
>> eval "foo = 0"
|
369
|
+
=> 0
|
370
|
+
>> foo
|
371
|
+
=> 0
|
372
|
+
|
373
|
+
となり, エラーを起こしません. これは, rubyが最初にスクリプト全体をコン
|
374
|
+
パイルしてローカル変数を決定するからです. それに対し, irbは実行可能に
|
375
|
+
なる(式が閉じる)と自動的に評価しているからです. 上記の例では,
|
376
|
+
|
377
|
+
evel "foo = 0"
|
378
|
+
|
379
|
+
を行なった時点で評価を行ない, その時点で変数が定義されるため, 次式で
|
380
|
+
変数fooは定義されているからです.
|
381
|
+
|
382
|
+
このようなrubyとirbの動作の違いを解決したい場合は, begin...endで括って
|
383
|
+
バッチ的に実行して下さい:
|
384
|
+
|
385
|
+
>> begin
|
386
|
+
?> eval "foo = 0"
|
387
|
+
>> foo
|
388
|
+
>> end
|
389
|
+
NameError: undefined local variable or method `foo' for #<Object:0x4013d0f0>
|
390
|
+
(irb):3
|
391
|
+
(irb_local_binding):1:in `eval'
|
392
|
+
|
393
|
+
== ヒアドキュメント
|
394
|
+
|
395
|
+
現在のところヒアドキュメントの実装は不完全です.
|
396
|
+
|
397
|
+
== シンボル
|
398
|
+
|
399
|
+
シンボルであるかどうかの判断を間違えることがあります. 具体的には式が完了
|
400
|
+
しているのに継続行と見なすことがあります.
|
401
|
+
|
402
|
+
=end
|
403
|
+
|
404
|
+
% Begin Emacs Environment
|
405
|
+
% Local Variables:
|
406
|
+
% mode: text
|
407
|
+
% comment-column: 0
|
408
|
+
% comment-start: "%"
|
409
|
+
% comment-end: "\n"
|
410
|
+
% End:
|
411
|
+
%
|