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

ruby-changes:3075

From: ko1@a...
Date: 24 Dec 2007 11:25:49 +0900
Subject: [ruby-changes:3075] drbrain - Ruby:r14567 (trunk): Fix display of GEMDIRS, make command command examples match ri's name.

drbrain	2007-12-24 11:25:39 +0900 (Mon, 24 Dec 2007)

  New Revision: 14567

  Modified files:
    trunk/ChangeLog
    trunk/lib/rdoc/ri/ri_options.rb
    trunk/lib/rdoc/ri/ri_paths.rb

  Log:
    Fix display of GEMDIRS, make command command examples match ri's name.
    
    Only allow latest ri dirs in ri output.
    


  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/lib/rdoc/ri/ri_options.rb?r1=14567&r2=14566
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=14567&r2=14566
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/lib/rdoc/ri/ri_paths.rb?r1=14567&r2=14566

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 14566)
+++ ChangeLog	(revision 14567)
@@ -1,5 +1,12 @@
-Mon Dec 24 10:49:04 2007
+Mon Dec 24 11:20:31 2007  Eric Hodel  <drbrain@s...>
 
+	* lib/rdoc/ri/ri_options.rb:  Fix display of GEMDIRS, make command
+	examples match ri's name.
+
+	* lib/rdoc/ri/ri_paths.rb:  Only allow latest ri dirs in ri output.
+
+Mon Dec 24 10:49:04 2007  Eric Hodel  <drbrain@s...>
+
 	* lib/uri/mailto.rb, lib/uri/common.rb:  Fix Regexp warnings.  Patch
 	#16524 from Kornelius Kalnbach, [ruby-core:14302].
 
Index: lib/rdoc/ri/ri_options.rb
===================================================================
--- lib/rdoc/ri/ri_options.rb	(revision 14566)
+++ lib/rdoc/ri/ri_options.rb	(revision 14567)
@@ -62,9 +62,10 @@
           (RI::Paths::HOMEDIR || "No ~/.rdoc found") ],
 
         [ "--gems",         nil,    nil,
-          "Include documentation from Rubygems:\n  " +
-          (RI::Paths::GEMDIRS ? "#{Gem.path}/doc/*/ri" :
-                                "No Rubygems ri found.") ],
+          "Include documentation from RubyGems:\n  " +
+          (RI::Paths::GEMDIRS ?
+           Gem.path.map { |dir| "#{dir}/doc/*/ri" }.join("\n") :
+           "No Rubygems ri found.") ],
                                                            
         [ "--format",       "-f",   "<name>",
           "Format to use when displaying output:\n" +
@@ -116,7 +117,8 @@
       def OptionList.error(msg)
         $stderr.puts
         $stderr.puts msg
-        $stderr.puts "\nFor help on options, try 'ri --help'\n\n"
+        name = File.basename $PROGRAM_NAME
+        $stderr.puts "\nFor help on options, try '#{name} --help'\n\n"
         exit 1
       end
       
@@ -136,7 +138,11 @@
           RI::Paths::HOMEDIR
         ]
 
-        directories << "#{Gem.path}/doc/*/ri" if RI::Paths::GEMDIRS
+        if RI::Paths::GEMDIRS then
+          Gem.path.each do |dir|
+            directories << "#{dir}/doc/*/ri"
+          end
+        end
 
         directories = directories.join("\n    ")
 
@@ -157,16 +163,16 @@
 
           For example:
 
-              ri  File
-              ri  File.new
-              ri  F.n
-              ri  zip
+              #{name}  File
+              #{name}  File.new
+              #{name}  F.n
+              #{name}  zip
 
           Note that shell quoting may be required for method names
           containing punctuation:
 
-              ri 'Array.[]'
-              ri compact\\!
+              #{name} 'Array.[]'
+              #{name} compact\\!
 
           By default ri searches for documentation in the following
           directories:
@@ -180,8 +186,8 @@
         EOT
 
         if short_form
-          puts "For help on options, type 'ri -h'"
-          puts "For a list of classes I know about, type 'ri -c'"
+          puts "For help on options, type '#{name} -h'"
+          puts "For a list of classes I know about, type '#{name} -c'"
         else
           puts "Options:\n\n"
           OPTION_LIST.each do|long, short, arg, desc|
Index: lib/rdoc/ri/ri_paths.rb
===================================================================
--- lib/rdoc/ri/ri_paths.rb	(revision 14566)
+++ lib/rdoc/ri/ri_paths.rb	(revision 14567)
@@ -42,14 +42,31 @@
     # This is the search path for 'ri'
     PATH = [ SYSDIR, SITEDIR, HOMEDIR ].find_all {|p| p && File.directory?(p)}
 
-    begin
-      require 'rubygems'
-      GEMDIRS = Dir["#{Gem.path}/doc/*/ri"]
-      GEMDIRS.each { |path| RI::Paths::PATH << path }
-    rescue LoadError
-      GEMDIRS = nil
+    require 'rubygems'
+
+    # HACK dup'd from Gem.latest_partials and friends
+    all_paths = []
+
+    all_paths = Gem.path.map do |dir|
+      Dir[File.join(dir, 'doc', '*', 'ri')]
+    end.flatten
+
+    ri_paths = {}
+
+    all_paths.each do |dir|
+      base = File.basename File.dirname(dir)
+      if base =~ /(.*)-((\d+\.)*\d+)/ then
+        name, version = $1, $2
+        ver = Gem::Version.new version
+        if ri_paths[name].nil? or ver > ri_paths[name][0] then
+          ri_paths[name] = [ver, dir]
+        end
+      end
     end
 
+    GEMDIRS = ri_paths.map { |k,v| v.last }.sort
+    GEMDIRS.each { |dir| RI::Paths::PATH << dir }
+
     # Returns the selected documentation directories as an Array, or PATH if no
     # overriding directories were given.
 

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml

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