Module: RDoc::RI::Paths

Defined in:
lib/rdoc/ri/paths.rb

Overview

The directories where ri data lives.

Constant Summary

SYSDIR =
File.join base, "system"
SITEDIR =
File.join base, "site"
HOMEDIR =
if homedir then
  File.join homedir, ".rdoc"
end

Class Method Summary (collapse)

Class Method Details

+ (Object) each(system, site, home, gems, *extra_dirs) {|SYSDIR, :system| ... }

Iterates over each selected path yielding the directory and type.

Yielded types:

:system

Where Ruby's ri data is stored. Yielded when system is true

:site

Where ri for installed libraries are stored. Yielded when site is true. Normally no ri data is stored here.

:home

~/.rdoc. Yielded when home is true.

:gem

ri data for an installed gem. Yielded when gems is true.

:extra

ri data directory from the command line. Yielded for each entry in extra_dirs

Yields:



50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/rdoc/ri/paths.rb', line 50

def self.each system, site, home, gems, *extra_dirs # :yields: directory, type
  extra_dirs.each do |dir|
    yield dir, :extra
  end

  yield SYSDIR,  :system if system
  yield SITEDIR, :site   if site
  yield HOMEDIR, :home   if home and HOMEDIR

  gemdirs.each do |dir|
    yield dir, :gem
  end if gems

  nil
end

+ (Object) gemdirs

The latest installed gems' ri directories



69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# File 'lib/rdoc/ri/paths.rb', line 69

def self.gemdirs
  return @gemdirs if @gemdirs

  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

+ (Object) path(system, site, home, gems, *extra_dirs)

Returns existing directories from the selected documentation directories as an Array.

See also ::each



105
106
107
108
109
# File 'lib/rdoc/ri/paths.rb', line 105

def self.path(system, site, home, gems, *extra_dirs)
  path = raw_path system, site, home, gems, *extra_dirs

  path.select { |directory| File.directory? directory }
end

+ (Object) raw_path(system, site, home, gems, *extra_dirs)

Returns selected documentation directories including nonexistent directories.

See also ::each



117
118
119
120
121
122
123
124
125
# File 'lib/rdoc/ri/paths.rb', line 117

def self.raw_path(system, site, home, gems, *extra_dirs)
  path = []

  each(system, site, home, gems, *extra_dirs) do |dir, type|
    path << dir
  end

  path.compact
end