class RDoc::RubyGemsHook
We define the following two similar name classes in this file:
RDoc::RubyGemsHook
is the main class that has real logic.
RDoc::RubygemsHook
is a class that is only for compatibility. RDoc::RubygemsHook
is used by RubyGems directly. We can remove this when all maintained RubyGems remove ‘rubygems/rdoc.rb`.
Attributes
Loaded version of RDoc
. Set
by ::load_rdoc
Force installation of documentation?
Generate rdoc?
Generate ri data?
Public Class Methods
Source
# File lib/rdoc/rubygems_hook.rb, line 54 def self.generate installer, specs start = Time.now types = installer.document generate_rdoc = types.include? 'rdoc' generate_ri = types.include? 'ri' specs.each do |spec| new(spec, generate_rdoc, generate_ri).generate end return unless generate_rdoc or generate_ri duration = (Time.now - start).to_i names = specs.map(&:name).join ', ' say "Done installing documentation for #{names} after #{duration} seconds" end
Post installs hook that generates documentation for each specification in specs
Source
# File lib/rdoc/rubygems_hook.rb, line 80 def self.load_rdoc return if @rdoc_version require_relative 'rdoc' @rdoc_version = Gem::Version.new ::RDoc::VERSION end
Loads the RDoc
generator
Source
# File lib/rdoc/rubygems_hook.rb, line 95 def initialize spec, generate_rdoc = false, generate_ri = true @doc_dir = spec.doc_dir @force = false @rdoc = nil @spec = spec @generate_rdoc = generate_rdoc @generate_ri = generate_ri @rdoc_dir = spec.doc_dir 'rdoc' @ri_dir = spec.doc_dir 'ri' end
Creates a new documentation generator for spec
. RDoc
and ri data generation can be enabled or disabled through generate_rdoc
and generate_ri
respectively.
Only generate_ri
is enabled by default.
Source
# File lib/rdoc/rubygems_hook.rb, line 73 def self.remove uninstaller new(uninstaller.spec).remove end
Public Instance Methods
Source
# File lib/rdoc/rubygems_hook.rb, line 113 def delete_legacy_args args args.delete '--inline-source' args.delete '--promiscuous' args.delete '-p' args.delete '--one-file' end
Removes legacy rdoc arguments from args
Source
# File lib/rdoc/rubygems_hook.rb, line 126 def document generator, options, destination generator_name = generator options = options.dup options.exclude ||= [] # TODO maybe move to RDoc::Options#finish options.setup_generator generator options.op_dir = destination Dir.chdir @spec.full_gem_path do options.finish end generator = options.generator.new @rdoc.store, options @rdoc.options = options @rdoc.generator = generator say "Installing #{generator_name} documentation for #{@spec.full_name}" FileUtils.mkdir_p options.op_dir Dir.chdir options.op_dir do begin @rdoc.class.current = @rdoc @rdoc.generator.generate ensure @rdoc.class.current = nil end end end
Generates documentation using the named generator
(“darkfish” or “ri”) and following the given options
.
Documentation will be generated into destination
Source
# File lib/rdoc/rubygems_hook.rb, line 159 def generate return if @spec.default_gem? return unless @generate_ri or @generate_rdoc setup options = nil args = @spec.rdoc_options args.concat @spec.source_paths args.concat @spec.extra_rdoc_files case config_args = Gem.configuration[:rdoc] when String then args = args.concat config_args.split(' ') when Array then args = args.concat config_args end delete_legacy_args args Dir.chdir @spec.full_gem_path do options = ::RDoc::Options.new options.default_title = "#{@spec.full_name} Documentation" options.parse args end options.quiet = !Gem.configuration.really_verbose @rdoc = new_rdoc @rdoc.options = options store = RDoc::Store.new store.encoding = options.encoding store.dry_run = options.dry_run store.main = options.main_page store.title = options.title @rdoc.store = store say "Parsing documentation for #{@spec.full_name}" Dir.chdir @spec.full_gem_path do @rdoc.parse_files options.files end document 'ri', options, @ri_dir if @generate_ri and (@force or not File.exist? @ri_dir) document 'darkfish', options, @rdoc_dir if @generate_rdoc and (@force or not File.exist? @rdoc_dir) end
Generates RDoc
and ri data
Source
# File lib/rdoc/rubygems_hook.rb, line 223 def rdoc_installed? File.exist? @rdoc_dir end
Is rdoc documentation installed?
Source
# File lib/rdoc/rubygems_hook.rb, line 230 def remove base_dir = @spec.base_dir raise Gem::FilePermissionError, base_dir unless File.writable? base_dir FileUtils.rm_rf @rdoc_dir FileUtils.rm_rf @ri_dir end
Removes generated RDoc
and ri data
Source
# File lib/rdoc/rubygems_hook.rb, line 242 def ri_installed? File.exist? @ri_dir end
Is ri data installed?
Source
# File lib/rdoc/rubygems_hook.rb, line 249 def setup self.class.load_rdoc raise Gem::FilePermissionError, @doc_dir if File.exist?(@doc_dir) and not File.writable?(@doc_dir) FileUtils.mkdir_p @doc_dir unless File.exist? @doc_dir end
Prepares the spec for documentation generation