Module: RDoc::RI::Paths
- 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.
Constant Summary collapse
Class Method Summary collapse
-
.each(system = true, site = true, home = true, gems = :latest, *extra_dirs) {|system_dir, :system| ... } ⇒ Object
Iterates over each selected path yielding the directory and type.
-
.gem_dir(name, version) ⇒ Object
The ri directory for the gem with
gem_name. -
.gemdirs(filter = :latest) ⇒ Object
The latest installed gems' ri directories.
-
.home_dir ⇒ Object
The location of the rdoc data in the user's home directory.
-
.path(system = true, site = true, home = true, gems = :latest, *extra_dirs) ⇒ Object
Returns existing directories from the selected documentation directories as an Array.
-
.raw_path(system, site, home, gems, *extra_dirs) ⇒ Object
Returns selected documentation directories including nonexistent directories.
-
.site_dir ⇒ Object
The location of ri data installed into the site dir.
-
.system_dir ⇒ Object
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| ... } ⇒ Object
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
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/rdoc/ri/paths.rb', line 35 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) ⇒ Object
The ri directory for the gem with gem_name.
57 58 59 60 61 62 63 |
# File 'lib/rdoc/ri/paths.rb', line 57 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) ⇒ Object
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.
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 98 99 100 101 102 103 104 105 106 107 108 |
# File 'lib/rdoc/ri/paths.rb', line 72 def self.gemdirs(filter = :latest) ri_paths = {} all = Gem::Specification.map do |spec| [File.join(spec.doc_dir, 'ri'), spec.name, spec.version] end if filter == :all 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 ri_paths[name] = [ver, name, dir] end end ri_paths.sort_by { |_, (_, name, _)| name }.map { |k, v| v.last } rescue LoadError [] end |
.home_dir ⇒ Object
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.
117 118 119 |
# File 'lib/rdoc/ri/paths.rb', line 117 def self.home_dir HOMEDIR end |
.path(system = true, site = true, home = true, gems = :latest, *extra_dirs) ⇒ Object
Returns existing directories from the selected documentation directories as an Array.
See also ::each
127 128 129 130 131 |
# File 'lib/rdoc/ri/paths.rb', line 127 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) ⇒ Object
Returns selected documentation directories including nonexistent directories.
See also ::each
139 140 141 142 143 144 145 146 147 |
# File 'lib/rdoc/ri/paths.rb', line 139 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 |
.site_dir ⇒ Object
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.
156 157 158 |
# File 'lib/rdoc/ri/paths.rb', line 156 def self.site_dir File.join BASE, 'site' end |
.system_dir ⇒ Object
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.
169 170 171 |
# File 'lib/rdoc/ri/paths.rb', line 169 def self.system_dir File.join BASE, 'system' end |