Class: RDoc::RubygemsHook

### Home Classes Methods

### In Files

- lib/rdoc/rubygems_hook.rb

### Parent

Object

### Methods

- ::generation_hook
- ::load_rdoc
- ::new
- #delete_legacy_args
- #document
- #generate
- #rdoc_installed?
- #remove
- #ri_installed?
- #setup

### Included Modules

- Gem::UserInteraction

### Files

- CVE-2013-0256.rdoc
- DEVELOPERS.rdoc
- LICENSE.rdoc
- Manifest.txt
- README.rdoc
- RI.rdoc
- Rakefile
- TODO.rdoc

### Class/Module Index

Quicksearch

- RDoc
- RDoc::Alias
- RDoc::AnonClass
- RDoc::AnyMethod
- RDoc::Attr
- RDoc::ClassModule
- RDoc::CodeObject
- RDoc::Comment
- RDoc::Constant
- RDoc::Context
- RDoc::Context::Section
- RDoc::CrossReference
- RDoc::ERBIO
- RDoc::ERBPartial
- RDoc::Encoding
- RDoc::Error
- RDoc::Extend
- RDoc::Gauntlet
- RDoc::Generator
- RDoc::Generator::Darkfish
- RDoc::Generator::JsonIndex
- RDoc::Generator::Markup
- RDoc::Generator::RI
- RDoc::GhostMethod
- RDoc::Include
- RDoc::Markdown
- RDoc::Markdown::Literals
- RDoc::Markup
- RDoc::Markup::AttrChanger
- RDoc::Markup::AttrSpan
- RDoc::Markup::AttributeManager
- RDoc::Markup::Attributes
- RDoc::Markup::BlankLine
- RDoc::Markup::BlockQuote
- RDoc::Markup::Document
- RDoc::Markup::Formatter
- RDoc::Markup::FormatterTestCase
- RDoc::Markup::HardBreak
- RDoc::Markup::Include
- RDoc::Markup::IndentedParagraph
- RDoc::Markup::List
- RDoc::Markup::ListItem
- RDoc::Markup::Paragraph
- RDoc::Markup::Parser
- RDoc::Markup::Parser::Error
- RDoc::Markup::Parser::ParseError
- RDoc::Markup::PreProcess
- RDoc::Markup::Raw
- RDoc::Markup::Rule
- RDoc::Markup::Special
- RDoc::Markup::TextFormatterTestCase
- RDoc::Markup::ToAnsi
- RDoc::Markup::ToBs
- RDoc::Markup::ToHtml
- RDoc::Markup::ToHtmlCrossref
- RDoc::Markup::ToHtmlSnippet
- RDoc::Markup::ToJoinedParagraph
- RDoc::Markup::ToLabel
- RDoc::Markup::ToMarkdown
- RDoc::Markup::ToRdoc
- RDoc::Markup::ToTableOfContents
- RDoc::Markup::ToTest
- RDoc::Markup::ToTtOnly
- RDoc::Markup::Verbatim
- RDoc::MetaMethod
- RDoc::MethodAttr
- RDoc::NormalClass
- RDoc::NormalModule
- RDoc::Options
- RDoc::Parser
- RDoc::Parser::C
- RDoc::Parser::ChangeLog
- RDoc::Parser::Markdown
- RDoc::Parser::RD
- RDoc::Parser::Ruby
- RDoc::Parser::RubyTools
- RDoc::Parser::Simple
- RDoc::Parser::Text
- RDoc::RD
- RDoc::RD::BlockParser
- RDoc::RD::Inline
- RDoc::RD::InlineParser
- RDoc::RDoc
- RDoc::RI
- RDoc::RI::Driver
- RDoc::RI::Driver::Error
- RDoc::RI::Driver::NotFoundError
- RDoc::RI::Error
- RDoc::RI::Paths
- RDoc::Require
- RDoc::RubyLex
- RDoc::RubyLex::Error
- RDoc::RubyToken
- RDoc::RubygemsHook
- RDoc::Servlet
- RDoc::SingleClass
- RDoc::Stats
- RDoc::Stats::Normal
- RDoc::Stats::Quiet
- RDoc::Stats::Verbose
- RDoc::Store
- RDoc::Store::Error
- RDoc::Store::MissingFileError
- RDoc::Task
- RDoc::Task
- RDoc::TestCase
- RDoc::TokenStream
- RDoc::TomDoc
- RDoc::TopLevel
- Object

No matching classes.

# RDoc::RubygemsHook

Gem::RDoc provides methods to generate RDoc and ri data for installed gems upon gem installation.

This file is automatically required by RubyGems 1.9 and newer.

### Attributes

rdoc_version[R]

Loaded version of RDoc. Set by ::load_rdoc

force[RW]

Force installation of documentation?

generate_rdoc[RW]

Generate rdoc?

generate_ri[RW]

Generate ri data?

### Public Class Methods

generation_hook(installer, specs) click to toggle source

Post installs hook that generates documentation for each specification in `specs`

    # File lib/rdoc/rubygems_hook.rb, line 48
    def self.generation_hook 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

load_rdoc() click to toggle source

Loads the RDoc generator

    # File lib/rdoc/rubygems_hook.rb, line 70
    def self.load_rdoc
      return if @rdoc_version

      require 'rdoc/rdoc'

      @rdoc_version = Gem::Version.new ::RDoc::VERSION
    end

new(spec, generate_rdoc = false, generate_ri = true) click to toggle source

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.

    # File lib/rdoc/rubygems_hook.rb, line 85
    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

### Public Instance Methods

delete_legacy_args(args) click to toggle source

Removes legacy rdoc arguments from `args`

    # File lib/rdoc/rubygems_hook.rb, line 103
    def delete_legacy_args args
      args.delete '--inline-source'
      args.delete '--promiscuous'
      args.delete '-p'
      args.delete '--one-file'
    end

document(generator, options, destination) click to toggle source

Generates documentation using the named `generator` ("darkfish" or "ri") and following the given `options`.

Documentation will be generated into `destination`

    # File lib/rdoc/rubygems_hook.rb, line 116
    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
      options.finish

      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

generate() click to toggle source

Generates RDoc and ri data

    # File lib/rdoc/rubygems_hook.rb, line 147
    def generate
      return if @spec.default_gem?
      return unless @generate_ri or @generate_rdoc

      setup

      options = nil

      args = @spec.rdoc_options
      args.concat @spec.require_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 if options.respond_to? :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

rdoc_installed?() click to toggle source

Is rdoc documentation installed?

    # File lib/rdoc/rubygems_hook.rb, line 211
    def rdoc_installed?
      File.exist? @rdoc_dir
    end

remove() click to toggle source

Removes generated RDoc and ri data

    # File lib/rdoc/rubygems_hook.rb, line 218
    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

ri_installed?() click to toggle source

Is ri data installed?

    # File lib/rdoc/rubygems_hook.rb, line 230
    def ri_installed?
      File.exist? @ri_dir
    end

setup() click to toggle source

Prepares the spec for documentation generation

    # File lib/rdoc/rubygems_hook.rb, line 237
    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

[Validate]

Generated with the Darkfish Rdoc Generator 2.