| Class | Generators::XMLGenerator |
| In: |
generators/xml_generator.rb
|
| Parent: | HTMLGenerator |
Generate XML output as one big file
Standard generator factory
# File generators/xml_generator.rb, line 16
16: def XMLGenerator.for(options)
17: XMLGenerator.new(options)
18: end
# 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:
# 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
# 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
# File generators/xml_generator.rb, line 104
104: def gen_class_index
105: gen_an_index(@classes, 'Classes')
106: end
# File generators/xml_generator.rb, line 100
100: def gen_file_index
101: gen_an_index(@files, 'Files')
102: end
# 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
# 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.
# 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
# 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