Generate XML output as one big file

Methods
B
F
G
N
Class Public methods
for(options)

Standard generator factory

# File lib/rdoc/generators/xml_generator.rb, line 16
def XMLGenerator.for(options)
  XMLGenerator.new(options)
end
new(*args)
# File lib/rdoc/generators/xml_generator.rb, line 21
def initialize(*args)
  super
end
Instance Public methods
build_class_list(from, html_file, class_dir)
# File lib/rdoc/generators/xml_generator.rb, line 61
def build_class_list(from, html_file, class_dir)
  @classes << HtmlClass.new(from, html_file, class_dir, @options)
  from.each_classmodule do |mod|
    build_class_list(mod, html_file, class_dir)
  end
end
build_indices()

Generate:

  • a list of HtmlFile objects for each TopLevel object.

  • a list of HtmlClass objects for each first level class or module in the TopLevel objects

  • a complete list of all hyperlinkable terms (file, class, module, and method names)

# File lib/rdoc/generators/xml_generator.rb, line 50
def build_indices
  @info.each do |toplevel|
    @files << HtmlFile.new(toplevel, @options, FILE_DIR)
  end
  RDoc::TopLevel.all_classes_and_modules.each do |cls|
    build_class_list(cls, @files[0], CLASS_DIR)
  end
end
gen_an_index(collection, title)
# File lib/rdoc/generators/xml_generator.rb, line 113
def gen_an_index(collection, title)
  res = []
  collection.sort.each do |f|
    if f.document_self
      res << { "href" => f.path, "name" => f.index_name }
    end
  end
  return {
    "entries" => res,
    'list_title' => title,
    'index_url'  => main_url,
  }
end
gen_class_index()
# File lib/rdoc/generators/xml_generator.rb, line 104
def gen_class_index
  gen_an_index(@classes, 'Classes')
end
gen_file_index()
# File lib/rdoc/generators/xml_generator.rb, line 100
def gen_file_index
  gen_an_index(@files, 'Files')
end
gen_into(list)
# File lib/rdoc/generators/xml_generator.rb, line 92
def gen_into(list)
  res = []
  list.each do |item|
    res << item.value_hash
  end
  res
end
gen_method_index()
# File lib/rdoc/generators/xml_generator.rb, line 108
def gen_method_index
  gen_an_index(HtmlMethod.all_methods, 'Methods')
end
generate(info)

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

# File lib/rdoc/generators/xml_generator.rb, line 30
def generate(info)
  @info       = info
  @files      = []
  @classes    = []
  @hyperlinks = {}
  build_indices
  generate_xml
end
generate_xml()

Generate all the HTML. For the one-file case, we generate all the information in to one big hash

# File lib/rdoc/generators/xml_generator.rb, line 72
def generate_xml
  values = {
    'charset' => @options.charset,
    'files'   => gen_into(@files),
    'classes' => gen_into(@classes)
  }
  # this method is defined in the template file
  write_extra_pages if defined? write_extra_pages
  template = TemplatePage.new(RDoc::Page::ONE_PAGE)
  if @options.op_name
    opfile = File.open(@options.op_name, "w")
  else
    opfile = $stdout
  end
  template.write_html_on(opfile, values)
end