Module: RDoc::RI::Paths
Relationships & Source Files | |
Defined in: | lib/rdoc/ri/paths.rb |
Overview
The directories where ri data lives. Paths
can be enumerated via .each, or queried individually via .system_dir, .site_dir, .home_dir and .gem_dir.
Class Method Summary
-
.each(system = true, site = true, home = true, gems = :latest, *extra_dirs) {|system_dir, :system| ... }
Iterates over each selected path yielding the directory and type.
-
.gem_dir(name, version)
The ri directory for the gem with
gem_name
. -
.gemdirs(filter = :latest)
The latest installed gems' ri directories.
-
.home_dir
The location of the rdoc data in the user's home directory.
-
.path(system = true, site = true, home = true, gems = :latest, *extra_dirs)
Returns existing directories from the selected documentation directories as an Array.
-
.raw_path(system, site, home, gems, *extra_dirs)
Returns selected documentation directories including nonexistent directories.
-
.site_dir
The location of ri data installed into the site dir.
-
.system_dir
The location of the built-in ri data.
Class Method Details
.each(system = true, site = true, home = true, gems = :latest, *extra_dirs) {|system_dir, :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
# File 'lib/rdoc/ri/paths.rb', line 46
def self.each system = true, site = true, home = true, gems = :latest, *extra_dirs # :yields: directory, type return enum_for __method__, system, site, home, gems, *extra_dirs unless block_given? extra_dirs.each do |dir| yield dir, :extra end yield system_dir, :system if system yield site_dir, :site if site yield home_dir, :home if home and HOMEDIR gemdirs(gems).each do |dir| yield dir, :gem end if gems nil end
.gem_dir(name, version)
The ri directory for the gem with gem_name
.
# File 'lib/rdoc/ri/paths.rb', line 68
def self.gem_dir name, version req = Gem::Requirement.new "= #{version}" spec = Gem::Specification.find_by_name name, req File.join spec.doc_dir, 'ri' end
.gemdirs(filter = :latest)
The latest installed gems' ri directories. filter
can be :all
or :latest
.
A filter
:all
includes all versions of gems and includes gems without ri documentation.
# File 'lib/rdoc/ri/paths.rb', line 83
def self.gemdirs filter = :latest require 'rubygems' unless defined?(Gem) ri_paths = {} all = Gem::Specification.map do |spec| [File.join(spec.doc_dir, 'ri'), spec.name, spec.version] end if filter == :all then gemdirs = [] all.group_by do |_, name, _| name end.sort_by do |group, _| group end.map do |group, items| items.sort_by do |_, _, version| version end.reverse_each do |dir,| gemdirs << dir end end return gemdirs end all.each do |dir, name, ver| next unless File.exist? dir if ri_paths[name].nil? or ver > ri_paths[name].first then ri_paths[name] = [ver, name, dir] end end ri_paths.sort_by { |_, (_, name, _)| name }.map { |k, v| v.last } rescue LoadError [] end
.home_dir
The location of the rdoc data in the user's home directory.
Like .system
, ri data in the user's home directory is rare and predates libraries distributed via RubyGems. ri data is rarely generated into this directory.
# File 'lib/rdoc/ri/paths.rb', line 130
def self.home_dir HOMEDIR end
.path(system = true, site = true, home = true, gems = :latest, *extra_dirs)
Returns existing directories from the selected documentation directories as an Array.
See also .each
# File 'lib/rdoc/ri/paths.rb', line 140
def self.path(system = true, site = true, home = true, gems = :latest, *extra_dirs) path = raw_path system, site, home, gems, *extra_dirs path.select { |directory| File.directory? directory } end
.raw_path(system, site, home, gems, *extra_dirs)
Returns selected documentation directories including nonexistent directories.
See also .each
.site_dir
The location of ri data installed into the site dir.
Historically this was available for documentation installed by Ruby libraries predating RubyGems. It is unlikely to contain any content for modern Ruby installations.
# File 'lib/rdoc/ri/paths.rb', line 169
def self.site_dir File.join BASE, 'site' end
.system_dir
The location of the built-in ri data.
This data is built automatically when make
is run when Ruby is installed. If you did not install Ruby by hand you may need to install the documentation yourself. Please consult the documentation for your package manager or Ruby installer for details. You can also use the rdoc-data gem to install system ri data for common versions of Ruby.
# File 'lib/rdoc/ri/paths.rb', line 182
def self.system_dir File.join BASE, 'system' end