From 09cbac3f868afd26a2aa73c45fb0765d5f116f4e Mon Sep 17 00:00:00 2001 From: nobu Date: Thu, 20 Aug 2009 22:25:52 +0000 Subject: * lib/rdoc/ri/gemdirs.rb: split from lib/rdoc/ri/paths.rb to get rid of loading rubygems and searching all gems always. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24603 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- lib/rdoc/ri/gemdirs.rb | 28 ++++++++++++++++++++++++++++ lib/rdoc/ri/paths.rb | 28 +--------------------------- 2 files changed, 29 insertions(+), 27 deletions(-) create mode 100644 lib/rdoc/ri/gemdirs.rb (limited to 'lib') diff --git a/lib/rdoc/ri/gemdirs.rb b/lib/rdoc/ri/gemdirs.rb new file mode 100644 index 0000000000..0bca992bca --- /dev/null +++ b/lib/rdoc/ri/gemdirs.rb @@ -0,0 +1,28 @@ +module RDoc::RI::Paths + begin + require 'rubygems' unless defined?(Gem) + + # 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| + if %r"/([^/]*)-((?:\d+\.)*\d+)/ri\z" =~ dir + name, version = $1, $2 + ver = Gem::Version.new(version) + if !ri_paths[name] or ver > ri_paths[name][0] + ri_paths[name] = [ver, dir] + end + end + end + + GEMDIRS = ri_paths.map { |k,v| v.last }.sort + rescue LoadError + GEMDIRS = [] + end +end diff --git a/lib/rdoc/ri/paths.rb b/lib/rdoc/ri/paths.rb index 562720c379..399fbbab00 100644 --- a/lib/rdoc/ri/paths.rb +++ b/lib/rdoc/ri/paths.rb @@ -51,33 +51,7 @@ module RDoc::RI::Paths SITEDIR = File.join(base, "site") HOMEDIR = (File.expand_path("~/.#{rdoc}") rescue nil) - begin - require 'rubygems' unless defined?(Gem) - - # 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 - rescue LoadError - GEMDIRS = [] - end + autoload(:GEMDIRS, File.expand_path('../gemdirs.rb', __FILE__)) # Returns the selected documentation directories as an Array, or PATH if no # overriding directories were given. -- cgit v1.2.3