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

Generate XML output as one big file

### Methods

build_class_list build_indices for gen_an_index gen_class_index gen_file_index gen_into gen_method_index generate generate_xml new

### Public Class methods

for(options)

Standard generator factory

[Source]

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

new(*args)

[Source]

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

### Public Instance methods

build_class_list(from, html_file, class_dir)

[Source]

    # 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

build_indices()

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 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

gen_an_index(collection, title)

[Source]

    # 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

gen_class_index()

[Source]

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

gen_file_index()

[Source]

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

gen_into(list)

[Source]

    # File rdoc/generators/xml_generator.rb, line 92
        def gen_into(list)
          res = []
          list.each do |item|
            res << item.value_hash
          end
          res
        end

gen_method_index()

[Source]

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

generate(info)

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

[Source]

    # File rdoc/generators/xml_generator.rb, line 30
        def generate(info)
          @info       = info
          @files      = []
          @classes    = []
          @hyperlinks = {}

          build_indices
          generate_xml
        end

generate_xml()

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

[Source]

    # 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

[Validate]