RDoc::TopLevel (Class)

In: rdoc/code_objects.rb
Parent: Context

A TopLevel context is a source file

Attributes

diagram  [RW] 
file_absolute_name  [RW] 
file_relative_name  [RW] 
file_stat  [RW] 

Public Class methods

[Source]

# File rdoc/code_objects.rb, line 458
    def TopLevel.all_classes_and_modules
      @@all_classes.values + @@all_modules.values
    end

[Source]

# File rdoc/code_objects.rb, line 462
    def TopLevel.find_class_named(name)
     @@all_classes.each_value do |c|
        res = c.find_class_named(name) 
        return res if res
      end
      nil
    end

[Source]

# File rdoc/code_objects.rb, line 417
    def initialize(file_name)
      super()
      @name = "TopLevel"
      @file_relative_name = file_name
      @file_absolute_name = file_name
      @file_stat          = File.stat(file_name)
      @diagram            = nil
    end

[Source]

# File rdoc/code_objects.rb, line 412
    def TopLevel::reset
      @@all_classes = {}
      @@all_modules = {}
    end

Public Instance methods

Adding a class or module to a TopLevel is special, as we only want one copy of a particular top-level class. For example, if both file A and file B implement class C, we only want one ClassModule object for C. This code arranges to share classes and modules between files.

[Source]

# File rdoc/code_objects.rb, line 436
    def add_class_or_module(collection, class_type, name, superclass)
      cls = collection[name]
      if cls
        puts "Reusing class/module #{name}" if $DEBUG
      else
        if class_type == NormalModule
          all = @@all_modules
        else
          all = @@all_classes
        end
        cls = all[name]
        if !cls
          cls = class_type.new(name, superclass)
          all[name] = cls  unless @done_documenting
        end
        puts "Adding class/module #{name} to #@name" if $DEBUG
        collection[name] = cls unless @done_documenting
        cls.parent = self
      end
      cls
    end

[Source]

# File rdoc/code_objects.rb, line 474
    def find_class_or_module_named(symbol)
      @@all_classes.each_value {|c| return c if c.name == symbol}
      @@all_modules.each_value {|m| return m if m.name == symbol}
      nil
    end

[Source]

# File rdoc/code_objects.rb, line 470
    def find_local_symbol(symbol)
      find_class_or_module_named(symbol) || super
    end

[Source]

# File rdoc/code_objects.rb, line 426
    def full_name
      nil
    end

[Validate]