Class RDoc::TopLevel
In: lib/rdoc/code_objects.rb
Parent: Context

A TopLevel context is a source file

Methods

Attributes

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

Public Class methods

[Source]

     # File lib/rdoc/code_objects.rb, line 518
518:     def TopLevel.all_classes_and_modules
519:       @@all_classes.values + @@all_modules.values
520:     end

[Source]

     # File lib/rdoc/code_objects.rb, line 522
522:     def TopLevel.find_class_named(name)
523:      @@all_classes.each_value do |c|
524:         res = c.find_class_named(name) 
525:         return res if res
526:       end
527:       nil
528:     end

[Source]

     # File lib/rdoc/code_objects.rb, line 477
477:     def initialize(file_name)
478:       super()
479:       @name = "TopLevel"
480:       @file_relative_name = file_name
481:       @file_absolute_name = file_name
482:       @file_stat          = File.stat(file_name)
483:       @diagram            = nil
484:     end

[Source]

     # File lib/rdoc/code_objects.rb, line 472
472:     def TopLevel::reset
473:       @@all_classes = {}
474:       @@all_modules = {}
475:     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 lib/rdoc/code_objects.rb, line 496
496:     def add_class_or_module(collection, class_type, name, superclass)
497:       cls = collection[name]
498:       if cls
499:         puts "Reusing class/module #{name}" if $DEBUG
500:       else
501:         if class_type == NormalModule
502:           all = @@all_modules
503:         else
504:           all = @@all_classes
505:         end
506:         cls = all[name]
507:         if !cls
508:           cls = class_type.new(name, superclass)
509:           all[name] = cls  unless @done_documenting
510:         end
511:         puts "Adding class/module #{name} to #@name" if $DEBUG
512:         collection[name] = cls unless @done_documenting
513:         cls.parent = self
514:       end
515:       cls
516:     end

[Source]

     # File lib/rdoc/code_objects.rb, line 534
534:     def find_class_or_module_named(symbol)
535:       @@all_classes.each_value {|c| return c if c.name == symbol}
536:       @@all_modules.each_value {|m| return m if m.name == symbol}
537:       nil
538:     end

[Source]

     # File lib/rdoc/code_objects.rb, line 530
530:     def find_local_symbol(symbol)
531:       find_class_or_module_named(symbol) || super
532:     end

Find a named module

[Source]

     # File lib/rdoc/code_objects.rb, line 541
541:     def find_module_named(name)
542:       find_class_or_module_named(name) || find_enclosing_module_named(name)
543:     end

[Source]

     # File lib/rdoc/code_objects.rb, line 486
486:     def full_name
487:       nil
488:     end

[Validate]