Class Generators::XMLGenerator
In: generators/xml_generator.rb
Parent: HTMLGenerator

Generate XML output as one big file

Methods

Public Class methods

Standard generator factory

[Source]

    # File generators/xml_generator.rb, line 16
16:     def XMLGenerator.for(options)
17:       XMLGenerator.new(options)
18:     end

[Source]

    # File generators/xml_generator.rb, line 21
21:     def initialize(*args)
22:       super
23:     end

Public Instance methods

[Source]

    # File generators/xml_generator.rb, line 61
61:     def build_class_list(from, html_file, class_dir)
62:       @classes << HtmlClass.new(from, html_file, class_dir, @options)
63:       from.each_classmodule do |mod|
64:         build_class_list(mod, html_file, class_dir)
65:       end
66:     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 generators/xml_generator.rb, line 50
50:     def build_indices
51: 
52:       @info.each do |toplevel|
53:         @files << HtmlFile.new(toplevel, @options, FILE_DIR)
54:       end
55: 
56:       RDoc::TopLevel.all_classes_and_modules.each do |cls|
57:         build_class_list(cls, @files[0], CLASS_DIR)
58:       end
59:     end

[Source]

     # File generators/xml_generator.rb, line 113
113:     def gen_an_index(collection, title)
114:       res = []
115:       collection.sort.each do |f|
116:         if f.document_self
117:           res << { "href" => f.path, "name" => f.index_name }
118:         end
119:       end
120: 
121:       return {
122:         "entries" => res,
123:         'list_title' => title,
124:         'index_url'  => main_url,
125:       }
126:     end

[Source]

     # File generators/xml_generator.rb, line 104
104:     def gen_class_index
105:       gen_an_index(@classes, 'Classes')
106:     end

[Source]

     # File generators/xml_generator.rb, line 100
100:     def gen_file_index
101:       gen_an_index(@files, 'Files')
102:     end

[Source]

    # File generators/xml_generator.rb, line 92
92:     def gen_into(list)
93:       res = []
94:       list.each do |item|
95:         res << item.value_hash
96:       end
97:       res
98:     end

[Source]

     # File generators/xml_generator.rb, line 108
108:     def gen_method_index
109:       gen_an_index(HtmlMethod.all_methods, 'Methods')
110:     end

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

[Source]

    # File generators/xml_generator.rb, line 30
30:     def generate(info)
31:       @info       = info
32:       @files      = []
33:       @classes    = []
34:       @hyperlinks = {}
35: 
36:       build_indices
37:       generate_xml
38:     end

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

[Source]

    # File generators/xml_generator.rb, line 72
72:     def generate_xml
73:       values = { 
74:         'charset' => @options.charset,
75:         'files'   => gen_into(@files),
76:         'classes' => gen_into(@classes)
77:       }
78:       
79:       # this method is defined in the template file
80:       write_extra_pages if defined? write_extra_pages
81: 
82:       template = TemplatePage.new(RDoc::Page::ONE_PAGE)
83: 
84:       if @options.op_name
85:         opfile = File.open(@options.op_name, "w")
86:       else
87:         opfile = $stdout
88:       end
89:       template.write_html_on(opfile, values)
90:     end

[Validate]