Module: RDoc

Defined in:
lib/rdoc.rb,
lib/rdoc/version.rb,
lib/rdoc/markup/raw.rb,
lib/rdoc/rbs_helper.rb,
lib/rdoc/markup/table.rb,
lib/rdoc/known_classes.rb,
lib/rdoc/rubygems_hook.rb,
lib/rdoc/markup/element.rb,
lib/rdoc/markup/heading.rb,
lib/rdoc/markup/blank_line.rb,
lib/rdoc/markup/hard_break.rb

Overview

RBS type signature support. Loads type information from .rbs files, validates inline annotations, and converts type signatures to HTML with linked type names.

Defined Under Namespace

Modules: Encoding, Generator, I18n, RI, RbsHelper, Text, TokenStream Classes: Alias, AnyMethod, Attr, ClassModule, CodeObject, Comment, Constant, Context, CrossReference, ERBIO, ERBPartial, Error, Extend, Include, Markdown, Markup, MethodAttr, Mixin, NormalClass, NormalModule, Options, Parser, RD, RDoc, Require, RubyGemsHook, RubygemsHook, Server, SingleClass, Stats, Store, Task, TomDoc, TopLevel

Constant Summary collapse

VISIBILITIES =

Method visibilities

[:public, :protected, :private]
DOT_DOC_FILENAME =

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

".document"
GENERAL_MODIFIERS =

General RDoc modifiers

%w[nodoc].freeze
CLASS_MODIFIERS =

RDoc modifiers for classes

GENERAL_MODIFIERS
ATTR_MODIFIERS =

RDoc modifiers for attributes

GENERAL_MODIFIERS
CONSTANT_MODIFIERS =

RDoc modifiers for constants

GENERAL_MODIFIERS
METHOD_MODIFIERS =

RDoc modifiers for methods

GENERAL_MODIFIERS +
%w[arg args yield yields notnew not-new not_new doc]
VERSION =

RDoc version you are using

'8.0.0'
KNOWN_CLASSES =

Ruby’s built-in classes, modules and exceptions

{
  "rb_cArray"            => "Array",
  "rb_cBasicObject"      => "BasicObject",
  "rb_cBignum"           => "Bignum",
  "rb_cClass"            => "Class",
  "rb_cData"             => "Data",
  "rb_cDir"              => "Dir",
  "rb_cEncoding"         => "Encoding",
  "rb_cFalseClass"       => "FalseClass",
  "rb_cFile"             => "File",
  "rb_cFixnum"           => "Fixnum",
  "rb_cFloat"            => "Float",
  "rb_cHash"             => "Hash",
  "rb_cIO"               => "IO",
  "rb_cInteger"          => "Integer",
  "rb_cModule"           => "Module",
  "rb_cNilClass"         => "NilClass",
  "rb_cNumeric"          => "Numeric",
  "rb_cObject"           => "Object",
  "rb_cProc"             => "Proc",
  "rb_cRange"            => "Range",
  "rb_cRefinement"       => "Refinement",
  "rb_cRegexp"           => "Regexp",
  "rb_cRubyVM"           => "RubyVM",
  "rb_cSocket"           => "Socket",
  "rb_cString"           => "String",
  "rb_cStruct"           => "Struct",
  "rb_cSymbol"           => "Symbol",
  "rb_cThread"           => "Thread",
  "rb_cTime"             => "Time",
  "rb_cTrueClass"        => "TrueClass",

  "rb_eArgError"         => "ArgumentError",
  "rb_eEOFError"         => "EOFError",
  "rb_eException"        => "Exception",
  "rb_eFatal"            => "fatal",
  "rb_eFloatDomainError" => "FloatDomainError",
  "rb_eIOError"          => "IOError",
  "rb_eIndexError"       => "IndexError",
  "rb_eInterrupt"        => "Interrupt",
  "rb_eLoadError"        => "LoadError",
  "rb_eNameError"        => "NameError",
  "rb_eNoMemError"       => "NoMemoryError",
  "rb_eNotImpError"      => "NotImplementedError",
  "rb_eRangeError"       => "RangeError",
  "rb_eRuntimeError"     => "RuntimeError",
  "rb_eScriptError"      => "ScriptError",
  "rb_eSecurityError"    => "SecurityError",
  "rb_eSignal"           => "SignalException",
  "rb_eStandardError"    => "StandardError",
  "rb_eSyntaxError"      => "SyntaxError",
  "rb_eSystemCallError"  => "SystemCallError",
  "rb_eSystemExit"       => "SystemExit",
  "rb_eTypeError"        => "TypeError",
  "rb_eZeroDivError"     => "ZeroDivisionError",

  "rb_mComparable"       => "Comparable",
  "rb_mEnumerable"       => "Enumerable",
  "rb_mErrno"            => "Errno",
  "rb_mFConst"           => "File::Constants",
  "rb_mFileTest"         => "FileTest",
  "rb_mGC"               => "GC",
  "rb_mKernel"           => "Kernel",
  "rb_mMath"             => "Math",
  "rb_mProcess"          => "Process"
}

Class Method Summary collapse

Class Method Details

.homeObject

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.



153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
# File 'lib/rdoc.rb', line 153

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

.load_yamlObject

Loads the YAML backend used for .rdoc_options.

Psych is preferred and used whenever it can be required. Requiring yaml is not attempted as a fallback because yaml is merely a thin wrapper that loads Psych anyway. When Psych is genuinely unavailable, a minimal serializer shipped with RubyGems or Bundler is loaded instead, so that RDoc does not need a runtime dependency on Psych. Callers branch on whether Psych is defined and use ::yaml_serializer otherwise.



112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
# File 'lib/rdoc.rb', line 112

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
    # Psych is unavailable; load the stub serializer shipped with RubyGems,
    # or Bundler's copy on RubyGems older than 3.5 (Ruby 3.2) where
    # rubygems/yaml_serializer does not exist yet.
    begin
      require 'rubygems/yaml_serializer'
    rescue ::LoadError
      require 'bundler/yaml_serializer'
    end
  end
end

.safe_mtime(file) ⇒ Object

Returns File.mtime(file), or nil if the file cannot be stat’d (missing, permission denied, etc.).



179
180
181
182
183
# File 'lib/rdoc.rb', line 179

def self.safe_mtime(file)
  File.mtime(file)
rescue SystemCallError
  nil
end

.yaml_serializerObject

The minimal YAML serializer module loaded by ::load_yaml as a fallback. Only meaningful when Psych is not defined.



138
139
140
# File 'lib/rdoc.rb', line 138

def self.yaml_serializer
  defined?(Gem::YAMLSerializer) ? Gem::YAMLSerializer : Bundler::YAMLSerializer
end