summaryrefslogtreecommitdiff
path: root/doc/irb/irb-tools.rd.ja
blob: 64d9ab29c88d1cc4536e368188560122c509c347 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
irb関連おまけコマンドとライブラリ
				$Release Version: 0.7.1 $
			   	$Revision$
			   	$Date$
			   	by Keiju ISHITSUKA(Nihon Rational Co.,Ltd.)

=begin

:コマンド:
* rtags		-- ruby tags command

:関数ライブラリ:
* xmp		-- irb version of gotoken xmp-function

:クラスライブラリ:
* frame.rb      -- frame tracer
* completion.rb -- irb completor

= rtags

rtagsはemacs及びvi用の, TAGファイルをつくるコマンドです.

== 使い方

   rtags [-vi] file....

カレントディレクトリにemacs用のTAGSファイルができます. -viオプションを
つけた時にはvi用のtagsファイルを作成します.

emacsの場合, 通常のetags.elがそのまま使えます. 検索可能なのは,

* クラス
* メソッド
* 特異メソッド
* alias
* attrで宣言されたアクセサ(パラメータがシンボルか文字列リテラルに限る)
* attr_XXXで宣言されたアクセサ(パラメータがシンボルか文字列リテラルに限る)

です.

Cなどで使っているのと違うのは, コンプリーションに関する部分で,

関数名は,

  関数名(

クラスは,

  ::クラス名::....::クラス名

メソッドは,

  ::クラス名::....::クラス名#メソッド名

特異メソッド(クラスメソッド)は

  ::クラス名::....::クラス名.メソッド名

でコンプリーションを行なうところです.

= xmp.rb

ごとけんxmpの上位互換バージョンです. ただ, 非常に重いのでごとけんxmpで
は対応できない時に, 使用すると良いでしょう.

== 使い方

=== 関数として使う.

    require "irb/xmp"
    xmp <<END
    foo = 1
    foo
    END
    ---
    foo = 1
        ==>1
    foo
	==>1

=== XMPインスタンスを用いる.

この場合は, XMPがコンテキスト情報を持つので, 変数の値などを保持してい
ます.

  require "irb/xmp"
  xmp = XMP.new
  xmp.puts <<END
  foo = 1
  foo
  END
  xmp.puts <<END
  foo
  END
  ===
  foo = 1
      ==>1
  foo
      ==>1
  foo
      ==>1

== コンテキストに関して

XMPメソッド群のコンテキストは, 呼び出す前のコンテキストで評価されます.
明示的にコンテキストを指定するとそのコンテキストで評価します.

例:

  xmp "foo", an_binding

:注:
マルチスレッドには対応していません.

= frame.rb
現在実行中のフレーム情報を取り扱うためのクラスです. 

* IRB::Frame.top(n = 0)
  上からn番目のコンテキストを取り出します. nは0が最上位になります.
* IRB::Frame.bottom(n = 0)
  下からn番目のコンテキストを取り出します. nは0が最下位になります.
* IRB::Frame.sender
  センダになっているオブジェクトを取り出します. センダとは, そのメソッ
  ドを呼び出した側のselfのことです.

:注:
set_trace_funcを用いてRubyの実行をトレースしています. マルチスレッドに
は対応していません.

= completion.rb
irbのcompletion機能を提供するものです. 

== 使い方

   % irb -r irb/completion

とするか, ~/.irbrc 中に

   require "irb/completion"

を入れてください. irb実行中に require "irb/completion" してもよいです.

irb実行中に (TAB) を押すとコンプレーションします.

トップレベルで(TAB)を押すとすべての構文要素, クラス, メソッドの候補がで
ます. 候補が唯一ならば完全に補完します.

  irb(main):001:0> in    
  in                    inspect               instance_eval
  include               install_alias_method  instance_of?
  initialize            install_aliases       instance_variables
  irb(main):001:0> inspect
  "main"
  irb(main):002:0> foo = Object.new
  #<Object:0x4027146c>

  ((|変数名.|))の後に(TAB)を押すと, そのオブジェクトのメソッド一覧がでま
  す.

  irb(main):003:0> foo.
  foo.==                  foo.frozen?             foo.protected_methods
  foo.===                 foo.hash                foo.public_methods
  foo.=~                  foo.id                  foo.respond_to?
  foo.__id__              foo.inspect             foo.send
  foo.__send__            foo.instance_eval       foo.singleton_methods
  foo.class               foo.instance_of?        foo.taint
  foo.clone               foo.instance_variables  foo.tainted?
  foo.display             foo.is_a?               foo.to_a
  foo.dup                 foo.kind_of?            foo.to_s
  foo.eql?                foo.method              foo.type
  foo.equal?              foo.methods             foo.untaint
  foo.extend              foo.nil?                
  foo.freeze              foo.private_methods     

=end

% Begin Emacs Environment
% Local Variables:
% mode: text
% comment-column: 0
% comment-start: "%"
% comment-end: "\n"
% End:
%