[前][次][番号順一覧][スレッド一覧]

ruby-reference-manual:3086

From: "sho-h (Sho Hashimoto)" <sho-h@n...>
Date: Mon, 4 Jun 2012 00:59:20 +0900
Subject: [ruby-reference-manual:3086] [るりまプロジェクト - Bug #191] refe succ


Issue #191 has been updated by sho-h (Sho Hashimoto).

Description updated

本チケットを追いかけてみました。

元々のご指摘とは異なる話ですが、以下を実行した時に _builtin の String#succ しか表示できなかったため、何か対応をした方がいいと考えています。

  $ ./refe-1_8_7 --all succ
  ...(中略)...
  --- succ -> String
  --- next -> String
  
  self の「次の」文字列を返します。
  ...(中略)...
  --- succ -> String
  --- next -> String
  
  self の「次の」文字列を返します。

どちらも _builtin の方の String#succ が表示されています。

元々ヒットしてるのは確かに jcode の String#succ みたいなのですが、それを表示する方法がわかりませんでした。(もちろん方法があるかもしれません)

調べた範囲では、BitClust::Completion#_search_methods で実際の検索が行われ、その内部のメソッドで method/=sindex を参照しているようですが、succ については以下の情報のみが記録されています。

  succ    Integer# String# String# Time# Date# IPAddr# Prime#

なので、jcode なのか _builtin なのか現状区別が付かないといった事が原因のようです。

あまり大掛かりな修正も何ですので、ad-hoc な修正をするとしたら以下のようにする事で --all を指定して succ を検索した時に全て表示できます。

  --- completion.rb	(revision 5184)
  +++ completion.rb	(working copy)
  @@ -88,9 +88,16 @@
           spec = MethodSpec.new(nil, pattern.type, name)
           crefs = mname2crefs_narrow(name)
   #split_time "c expand  (#{crefs.size})"
  -        crefs.map {|cref|
  -          spec = mspec_from_cref_mname(classid2name(cref), name)
  -          SearchResult::Record.new(self, spec, spec)
  +        crefs.group_by {|v| v}.values.map {|refs|
  +          if refs.length > 1
  +            spec = mspec_from_cref_mname(classid2name(refs.first), name)
  +            fetch_methods(spec).map do |entry|
  +              SearchResult::Record.new(self, spec, spec, entry)
  +            end
  +          else
  +            spec = mspec_from_cref_mname(classid2name(refs.first), name)
  +            SearchResult::Record.new(self, spec, spec)
  +          end
           }
         }.flatten
         SearchResult.new(self, pattern, [], records)

ただし、これでは String#succ の指定時は _builtin しか表示されません。また、 String#succ が 2 つ表示される件も特に対応していない状態です。

他にも以下のような事を検討しないといけないのではないかと思います。

* succ 検索時に String#succ の表示をどうするか(uniq して 1 つしか表示しないなど)
* jcode の String#succ の表示をどうするか(String#succ 表示時に全部表示するなど)

----------------------------------------
Bug #191: refe succ
https://bugs.ruby-lang.org/issues/191#change-26997

Author: znz (Kazuhiro NISHIYAMA)
Status: Feedback
Priority: Low
Assignee: 
Category: bitclust
Target version: 
reporter: 
ruby_version: 


=begin
 refeで1.8.6の方のsuccを調べると String#succ が2個出てくるのは

 おかしいのではないでしょうか?
 
 % ./refe-1_8_6 succ
 Date#succ Integer#succ Prime#succ String#succ String#succ Time#succ
 % ./refe-1_9_0 succ
 Date#succ IPAddr#succ Integer#succ Prime#succ String#succ Symbol#succ
 Time#succ
 %
 
 --
 ML: ruby-reference-manual@m...
 使い方: http://QuickML.com/
=end



-- 
http://bugs.ruby-lang.org/

--
ML: ruby-reference-manual@m...
Info: http://QuickML.com/

[前][次][番号順一覧][スレッド一覧]