In Files

  • rdoc/generator/ri.rb

Files

Class/Module Index [+]

Quicksearch

RDoc::Generator::RI

Public Class Methods

for(options) click to toggle source

Generator may need to return specific subclasses depending on the options they are passed. Because of this we create them using a factory

 
               # File rdoc/generator/ri.rb, line 15
def self.for(options)
  new(options)
end
            

Public Instance Methods

generate(toplevels) click to toggle source

Build the initial indices and output objects based on an array of TopLevel objects containing the extracted information.

 
               # File rdoc/generator/ri.rb, line 35
def generate(toplevels)
  RDoc::TopLevel.all_classes_and_modules.each do |cls|
    process_class cls
  end
end
            
generate_class_info(cls) click to toggle source
 
               # File rdoc/generator/ri.rb, line 50
def generate_class_info(cls)
  case cls
  when RDoc::NormalModule then
    cls_desc = RDoc::RI::ModuleDescription.new
  else
    cls_desc = RDoc::RI::ClassDescription.new
    cls_desc.superclass = cls.superclass
  end

  cls_desc.name        = cls.name
  cls_desc.full_name   = cls.full_name
  cls_desc.comment     = markup(cls.comment)

  cls_desc.attributes = cls.attributes.sort.map do |a|
    RDoc::RI::Attribute.new(a.name, a.rw, markup(a.comment))
  end

  cls_desc.constants = cls.constants.map do |c|
    RDoc::RI::Constant.new(c.name, c.value, markup(c.comment))
  end

  cls_desc.includes = cls.includes.map do |i|
    RDoc::RI::IncludedModule.new(i.name)
  end

  class_methods, instance_methods = method_list(cls)

  cls_desc.class_methods = class_methods.map do |m|
    RDoc::RI::MethodSummary.new(m.name)
  end

  cls_desc.instance_methods = instance_methods.map do |m|
    RDoc::RI::MethodSummary.new(m.name)
  end

  update_or_replace(cls_desc)

  class_methods.each do |m|
    generate_method_info(cls_desc, m)
  end

  instance_methods.each do |m|
    generate_method_info(cls_desc, m)
  end
end
            
generate_method_info(cls_desc, method) click to toggle source
 
               # File rdoc/generator/ri.rb, line 96
def generate_method_info(cls_desc, method)
  meth_desc = RDoc::RI::MethodDescription.new
  meth_desc.name = method.name
  meth_desc.full_name = cls_desc.full_name
  if method.singleton
    meth_desc.full_name += "::"
  else
    meth_desc.full_name += "#"
  end
  meth_desc.full_name << method.name

  meth_desc.comment = markup(method.comment)
  meth_desc.params = params_of(method)
  meth_desc.visibility = method.visibility.to_s
  meth_desc.is_singleton = method.singleton
  meth_desc.block_params = method.block_params

  meth_desc.aliases = method.aliases.map do |a|
    RDoc::RI::AliasName.new(a.name)
  end

  @ri_writer.add_method(cls_desc, meth_desc)
end
            
process_class(from_class) click to toggle source
 
               # File rdoc/generator/ri.rb, line 41
def process_class(from_class)
  generate_class_info(from_class)

  # now recurse into this class' constituent classes
  from_class.each_classmodule do |mod|
    process_class(mod)
  end
end
            

Protected Instance Methods

initialize(options) click to toggle source

Set up a new ri generator

 
               # File rdoc/generator/ri.rb, line 22
def initialize(options) #:not-new:
  @options   = options
  @ri_writer = RDoc::RI::Writer.new "."
  @markup    = RDoc::Markup.new
  @to_flow   = RDoc::Markup::ToFlow.new

  @generated = {}
end