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