# module RDoc

`RDoc` produces documentation for Ruby source files by parsing the source and extracting the definition for classes, modules, methods, includes and requires. It associates these with optional documentation contained in an immediately preceding comment block then renders the result using an output formatter.

For a simple introduction to writing or generating documentation using `RDoc` see the README.

## Roadmap¶ ↑

If you think you found a bug in `RDoc` see Bugs at `CONTRIBUTING`

If you want to use `RDoc` to create documentation for your Ruby source files, see `RDoc::Markup` and refer to `rdoc --help` for command line usage.

If you want to set the default markup format see Markup Formats at `RDoc::Markup`

If you want to store rdoc configuration in your gem (such as the default markup format) see Saved Options at `RDoc::Options`

If you want to write documentation for Ruby files see `RDoc::Parser::Ruby`

If you want to write documentation for extensions written in C see `RDoc::Parser::C`

If you want to generate documentation using `rake` see `RDoc::Task`.

If you want to drive `RDoc` programmatically, see `RDoc::RDoc`.

If you want to use the library to format text blocks into HTML or other formats, look at `RDoc::Markup`.

If you want to make an `RDoc` plugin such as a generator or directive handler see `RDoc::RDoc`.

If you want to write your own output generator see `RDoc::Generator`.

If you want an overview of how `RDoc` works see Bugs at `CONTRIBUTING`

## Credits¶ ↑

`RDoc` is currently being maintained by Eric Hodel <drbrain@segment7.net>.

Dave Thomas <dave@pragmaticprogrammer.com> is the original author of `RDoc`.

- The Ruby parser in rdoc/parse.rb is based heavily on the outstanding work of Keiju ISHITSUKA of Nippon `Rational` Inc, who produced the Ruby parser for irb and the rtags package.

This class is referenced by RubyGems to create documents. All implementations are moved to the above `RubyGemsHook`.

This class does nothing when this `RDoc` is installed as a normal gem or a bundled gem.

This class does generate/remove documents for compatibility when this `RDoc` is installed as a default gem.

We can remove this when all maintained RubyGems remove ‘rubygems/rdoc.rb`.

### Constants

ATTR_MODIFIERS

  `RDoc` modifiers for attributes

CLASS_MODIFIERS

  `RDoc` modifiers for classes

CONSTANT_MODIFIERS

  `RDoc` modifiers for constants

DOT_DOC_FILENAME

  Name of the dotfile that contains the description of files to be processed in the current directory

GENERAL_MODIFIERS

  General `RDoc` modifiers

KNOWN_CLASSES

  Ruby’s built-in classes, modules and exceptions

METHOD_MODIFIERS

  `RDoc` modifiers for methods

VERSION

  `RDoc` version you are using

VISIBILITIES

  `Method` visibilities

### Public Class Methods

home ()
Source

    # File lib/rdoc.rb, line 132
    def self.home
      rdoc_dir = begin
                  File.expand_path('~/.rdoc')
                rescue ArgumentError
                end

      if File.directory?(rdoc_dir)
        rdoc_dir
      else
        require 'fileutils'
        begin
          # XDG
          xdg_data_home = ENV["XDG_DATA_HOME"] || File.join(File.expand_path("~"), '.local', 'share')
          unless File.exist?(xdg_data_home)
            FileUtils.mkdir_p xdg_data_home
          end
          File.join xdg_data_home, "rdoc"
        rescue Errno::EACCES
        end
      end
    end

Searches and returns the directory for settings.

1. `$HOME/.rdoc` directory, if it exists.

2. The `rdoc` directory under the path specified by the `XDG_DATA_HOME` environment variable, if it is set.

3. `$HOME/.local/share/rdoc` directory.

Other than the home directory, the containing directory will be created automatically.

load_yaml ()
Source

    # File lib/rdoc.rb, line 105
    def self.load_yaml
      begin
        gem 'psych'
      rescue NameError => e # --disable-gems
        raise unless e.name == :gem
      rescue Gem::LoadError
      end

      begin
        require 'psych'
      rescue ::LoadError
      ensure
        require 'yaml'
      end
    end

Loads the best available `YAML` library.