Class RDoc::Generator::XML
In: generator/xml.rb
Parent: RDoc::Generator::HTML

Generate XML output as one big file

Methods

Public Class methods

Standard generator factory

[Source]

    # File generator/xml.rb, line 11
11:   def self.for(options)
12:     new(options)
13:   end

[Source]

    # File generator/xml.rb, line 15
15:   def initialize(*args)
16:     super
17:   end

Public Instance methods

[Source]

    # File generator/xml.rb, line 53
53:   def build_class_list(from, html_file, class_dir)
54:     @classes << RDoc::Generator::HtmlClass.new(from, html_file, class_dir, @options)
55:     from.each_classmodule do |mod|
56:       build_class_list(mod, html_file, class_dir)
57:     end
58:   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)

[Source]

    # File generator/xml.rb, line 43
43:   def build_indices
44:     @info.each do |toplevel|
45:       @files << RDoc::Generator::HtmlFile.new(toplevel, @options, RDoc::Generator::FILE_DIR)
46:     end
47: 
48:     RDoc::TopLevel.all_classes_and_modules.each do |cls|
49:       build_class_list(cls, @files[0], RDoc::Generator::CLASS_DIR)
50:     end
51:   end

[Source]

     # File generator/xml.rb, line 104
104:   def gen_an_index(collection, title)
105:     res = []
106:     collection.sort.each do |f|
107:       if f.document_self
108:         res << { "href" => f.path, "name" => f.index_name }
109:       end
110:     end
111: 
112:     return {
113:       "entries" => res,
114:       'list_title' => title,
115:       'index_url'  => main_url,
116:     }
117:   end

[Source]

    # File generator/xml.rb, line 96
96:   def gen_class_index
97:     gen_an_index(@classes, 'Classes')
98:   end

[Source]

    # File generator/xml.rb, line 92
92:   def gen_file_index
93:     gen_an_index(@files, 'Files')
94:   end

[Source]

    # File generator/xml.rb, line 84
84:   def gen_into(list)
85:     res = []
86:     list.each do |item|
87:       res << item.value_hash
88:     end
89:     res
90:   end

[Source]

     # File generator/xml.rb, line 100
100:   def gen_method_index
101:     gen_an_index(RDoc::Generator::HtmlMethod.all_methods, 'Methods')
102:   end

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

[Source]

    # File generator/xml.rb, line 24
24:   def generate(info)
25:     @info       = info
26:     @files      = []
27:     @classes    = []
28:     @hyperlinks = {}
29: 
30:     build_indices
31:     generate_xml
32:   end

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

[Source]

    # File generator/xml.rb, line 64
64:   def generate_xml
65:     values = {
66:       'charset' => @options.charset,
67:       'files'   => gen_into(@files),
68:       'classes' => gen_into(@classes)
69:     }
70: 
71:     # this method is defined in the template file
72:     write_extra_pages if defined? write_extra_pages
73: 
74:     template = RDoc::TemplatePage.new @template::ONE_PAGE
75: 
76:     if @options.op_name
77:       opfile = File.open(@options.op_name, "w")
78:     else
79:       opfile = $stdout
80:     end
81:     template.write_html_on(opfile, values)
82:   end

[Validate]