diff options
author | drbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-12-24 07:22:01 +0000 |
---|---|---|
committer | drbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-12-24 07:22:01 +0000 |
commit | aca88f87e540670d535a90efad67737c96b78c63 (patch) | |
tree | 8945a8c9d9ad02b94d11a20a38c77958bd91f58d /lib/rdoc | |
parent | b3b6136fafcbd8e7bb3bf0ffa29343259e7b15b1 (diff) |
Merge r14565 and r14567 from trunk
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@14582 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/rdoc')
-rw-r--r-- | lib/rdoc/ri/ri_options.rb | 34 | ||||
-rw-r--r-- | lib/rdoc/ri/ri_paths.rb | 27 |
2 files changed, 44 insertions, 17 deletions
diff --git a/lib/rdoc/ri/ri_options.rb b/lib/rdoc/ri/ri_options.rb index db9f4afecf..179ef96cea 100644 --- a/lib/rdoc/ri/ri_options.rb +++ b/lib/rdoc/ri/ri_options.rb @@ -62,10 +62,11 @@ module RI (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" + " " + RI::TextFormatter.list + "\n" + @@ -116,7 +117,8 @@ module RI 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 @@ module RI 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 @@ module RI 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 @@ module RI 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| diff --git a/lib/rdoc/ri/ri_paths.rb b/lib/rdoc/ri/ri_paths.rb index 32363bf70a..9768f12b7d 100644 --- a/lib/rdoc/ri/ri_paths.rb +++ b/lib/rdoc/ri/ri_paths.rb @@ -44,8 +44,29 @@ module RI begin require 'rubygems' - GEMDIRS = Dir["#{Gem.path}/doc/*/ri"] - GEMDIRS.each { |path| RI::Paths::PATH << path } + + # 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 } rescue LoadError GEMDIRS = nil end @@ -55,7 +76,7 @@ module RI def self.path(use_system, use_site, use_home, use_gems, *extra_dirs) path = raw_path(use_system, use_site, use_home, use_gems, *extra_dirs) - return path.select { |path| File.directory? path } + return path.select { |directory| File.directory? directory } end # Returns the selected documentation directories including nonexistent |