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