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

ruby-reference-manual:1512

From: Kazuhiro NISHIYAMA <zn@m...>
Date: Thu, 11 Jun 2009 18:33:33 +0900
Subject: [ruby-reference-manual:1512] synopsis_source

西山和広です。

末尾につけたパッチのような感じで refe で synopsis_source の表示を
試してみたのですが、以下のようにメソッドの引数や返値までだったり、
それが複数行あったり、説明が1行だったり複数行だったりなかったりして
います。

ドキュメントのソースをみると Array#join など、
http://doc.loveruby.net/wiki/HowToWriteMethodEntry.html
に従って「メソッドを一言で説明する文を一段落で書」いているように
見えるのですが、これは synopsis_source の実装の方が間違っていると
いうことで良いのでしょうか?

% ./refe-1_9_1 -s join
Array#join
 --- join(sep = $,)    -> String
File.join
 --- join(*item)    -> String
GServer#join
 --- join
Pathname#join
 --- join(*args)
 Pathname.new(File.join(self.to_s, *args)) と同じです。
Shell#join
 --- join(*item)    -> String
 Fileクラスにある同名のクラスメソッドと同じです.
Shellwords.join
 --- join(array) -> String
 配列の各要素である文字列に対して、Bourne シェルのコマンドライン中で安全に
 使えるためのエスケープを適用し、空白文字を介してそれらを連結したコマンド
 ライン文字列を生成します。
Thread#join
 --- join           -> self
 --- join(limit)    -> self | nil
ThreadsWait#join
 --- join(*threads) -> ()
URI.join
 --- join(uri_str, *path)    -> object
%

-- 
|ZnZ(ゼット エヌ ゼット)
|西山和広(Kazuhiro NISHIYAMA)

diff --git a/lib/bitclust/searcher.rb b/lib/bitclust/searcher.rb
index 2ad468e..daad44f 100644
--- a/lib/bitclust/searcher.rb
+++ b/lib/bitclust/searcher.rb
@@ -28,6 +28,7 @@ module BitClust
       @name = (/\Abitclust/ =~ cmd ? 'bitclust search' : 'refe')
       @describe_all = false
       @linep = false
+      @synopsis = false
       @encoding = nil
       @target_type = nil
       @listen_url = nil
@@ -53,6 +54,9 @@ module BitClust
         opt.on('-l', '--line', 'Prints one entry in one line.') {
           @linep = true
         }
+        opt.on('-s', '--synopsis', 'Prints synopsis.') {
+          @synopsis = true
+        }
         opt.on('-e', '--encoding=ENCODING', 'Select encoding.') {|enc|
           @encoding = enc
         }
@@ -133,6 +137,7 @@ module BitClust
       @view = TerminalView.new(compiler,
                               {:describe_all => @describe_all, 
                                :line => @linep,
+                               :synopsis => @synopsis,
                                :encoding => @encoding})
     end
 
@@ -297,6 +302,7 @@ module BitClust
       @compiler = compiler
       @describe_all = opts[:describe_all]
       @line = opts[:line]
+      @synopsis = opts[:synopsis]
       @encoding = opts[:encoding]
       @database = nil
     end
@@ -305,13 +311,19 @@ module BitClust
 
     def show_class(cs)
       if cs.size == 1
-        if @line
+        if @synopsis
+          print_synopsis cs.first
+        elsif @line
           print_names [cs.first.label]
         else
           describe_class cs.first
         end
       else
-        if @describe_all
+        if @synopsis
+          cs.sort.each do |c|
+            print_synopsis c
+          end
+        elsif @describe_all
           cs.sort.each do |c|
             describe_class c
           end
@@ -323,13 +335,19 @@ module BitClust
 
     def show_method(result)
       if result.determined?
-        if @line
+        if @synopsis
+          print_synopsis result.record.entry
+        elsif @line
           print_names result.names
         else
           describe_method result.record
         end
       else
-        if @describe_all
+        if @synopsis
+          result.each_record do |rec|
+            print_synopsis rec.entry
+          end
+        elsif @describe_all
           result.each_record do |rec|
             describe_method rec
           end
@@ -368,6 +386,11 @@ module BitClust
       puts buf unless buf.empty?
     end
 
+    def print_synopsis(entry)
+      puts entry.label
+      puts entry.synopsis_source.gsub(/^/, " ")
+    end
+
     def terminal_column
       (ENV['COLUMNS'] || 70).to_i
     end

--
ML: ruby-reference-manual@m...
使い方: http://QuickML.com/

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