Generate XML output as one big file
# File 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
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 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
# File 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
# File rdoc/generators/xml_generator.rb, line 104
def gen_class_index
gen_an_index(@classes, 'Classes')
end
# File rdoc/generators/xml_generator.rb, line 100
def gen_file_index
gen_an_index(@files, 'Files')
end
# File rdoc/generators/xml_generator.rb, line 92
def gen_into(list)
res = []
list.each do |item|
res << item.value_hash
end
res
end
# File rdoc/generators/xml_generator.rb, line 108
def gen_method_index
gen_an_index(HtmlMethod.all_methods, 'Methods')
end
Build the initial indices and output objects based on an array of TopLevel objects containing the extracted information.
# File rdoc/generators/xml_generator.rb, line 30
def generate(info)
@info = info
@files = []
@classes = []
@hyperlinks = {}
build_indices
generate_xml
end
Generate all the HTML. For the one-file case, we generate all the information in to one big hash
# File 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
Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.
If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.
If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.
If you want to help improve the Ruby documentation, please see Improve the docs, or visit Documenting-ruby.org.