あおきです。

  In mail "[ruby-list:37547] Re: ReFe 0.7 (Re: ReFe 0.6)"
    Koji Arai <JCA02266 / nifty.ne.jp> wrote:

> 新井です。

> あら?メソッド名入力時にクラス名入力してもちゃんとクラスの説明が出る。
> # ---- Singleton methods ----
> # っとたまたま ^--- が出て来るからだ(^^;

refe コマンドは何度かリトライしつつクラス名とメソッド名を適当
に判断するんです。人が使う分にはわりと便利なんですが、ライブ
ラリとして使うのは不便でしょう。検索するものがはっきり決まって
いる場合は一枚下のライブラリを直接叩くほうが楽だと思います。
たとえばメソッドを補完したいならこうします。

  ~ % ruby -rrefe/database -e \
    'puts ReFe::Database.new.method_document.complete(nil,nil,"each_k")'
  Hash#each_key
  GDBM#each_key
  ENV#each_key
  DBM#each_key

  ~ % ruby -rrefe/database -e \
    'puts ReFe::Database.new.method_document.complete("H","#","each_k")'
  Hash#each_key

でもってドキュメントを得ます。

  ~ % ruby -rrefe/database -e \
    'puts ReFe::Database.new.method_document["Hash#each_key"]'
  --- each_key {|key| ... }

      key を引数としてブロックを評価します。
      self を返します。

クラスを検索するなら s/method_document/class_document/ と
すれば OK です。

  ~ % ruby -rrefe/database -e \
    'puts ReFe::Database.new.class_document.complete("H")'
  Hash
  Handle

  ~ % ruby -rrefe/database -e \
    'puts ReFe::Database.new.class_document.complete("Has")'
  Hash

  ~ % ruby -rrefe/database -e \
    'puts ReFe::Database.new.class_document["Hash"]'
  ハッシュテーブル(連想配列とも呼ぶ)のクラス。ハッシュは任意の種類のオブ
  ジェクトから任意の種類のオブジェクトへの関連づけを行うことができます。
  ハッシュ生成は以下のようなハッシュ式で行われます。

    {a=>b, ... }

  ハッシュの格納に用いられるハッシュ値の計算には、
  Object#hash [Object/hash] メソッドが使われ、キーの同一性判定には、
  Object#eql? [Object/eql?] メソッドが使われます。

  キーとして与えたオブジェクトの内容が変化し、メソッド hash の返す
  値が変わるとハッシュから値が取り出せなくなりますから、Array、
  Hash などのインスタンスはキーに向きません。文字列をキーとして与
  えると、文字列をコピーし、コピーを更新不可に設定(freeze)してキーとして
  使用します。キーとして使われている文字列を更新しようとすると例外 
  TypeError が発生します。

-------------------------------------------------------------------
青木峰郎