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