Class | RDoc::TopLevel |
In: |
code_objects.rb
parsers/parse_f95.rb doc-tmp/rdoc/code_objects.rb |
Parent: | Context |
A TopLevel context is a source file
# File doc-tmp/rdoc/code_objects.rb, line 525 525: def self.all_classes_and_modules 526: @@all_classes.values + @@all_modules.values 527: end
# File code_objects.rb, line 525 525: def self.all_classes_and_modules 526: @@all_classes.values + @@all_modules.values 527: end
# File code_objects.rb, line 529 529: def self.find_class_named(name) 530: @@all_classes.each_value do |c| 531: res = c.find_class_named(name) 532: return res if res 533: end 534: nil 535: end
# File doc-tmp/rdoc/code_objects.rb, line 529 529: def self.find_class_named(name) 530: @@all_classes.each_value do |c| 531: res = c.find_class_named(name) 532: return res if res 533: end 534: nil 535: end
# File doc-tmp/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
# File 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
# File parsers/parse_f95.rb, line 748 748: def initialize(file_name) 749: super() 750: @name = "TopLevel" 751: @file_relative_name = file_name 752: @file_absolute_name = file_name 753: @file_stat = File.stat(file_name) 754: @diagram = nil 755: @@all_files[file_name] = self 756: end
# File doc-tmp/rdoc/code_objects.rb, line 472 472: def self.reset 473: @@all_classes = {} 474: @@all_modules = {} 475: end
# File parsers/parse_f95.rb, line 742 742: def TopLevel::reset 743: @@all_classes = {} 744: @@all_modules = {} 745: @@all_files = {} 746: end
# File code_objects.rb, line 472 472: def self.reset 473: @@all_classes = {} 474: @@all_modules = {} 475: end
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.
# File doc-tmp/rdoc/code_objects.rb, line 496 496: def add_class_or_module(collection, class_type, name, superclass) 497: cls = collection[name] 498: 499: if cls 500: puts "Reusing class/module #{name}" if $DEBUG_RDOC 501: else 502: if class_type == NormalModule 503: all = @@all_modules 504: else 505: all = @@all_classes 506: end 507: 508: cls = all[name] 509: 510: if !cls 511: cls = class_type.new(name, superclass) 512: all[name] = cls unless @done_documenting 513: end 514: 515: puts "Adding class/module #{name} to #{@name}" if $DEBUG_RDOC 516: 517: collection[name] = cls unless @done_documenting 518: 519: cls.parent = self 520: end 521: 522: cls 523: end
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.
# File code_objects.rb, line 496 496: def add_class_or_module(collection, class_type, name, superclass) 497: cls = collection[name] 498: 499: if cls 500: puts "Reusing class/module #{name}" if $DEBUG_RDOC 501: else 502: if class_type == NormalModule 503: all = @@all_modules 504: else 505: all = @@all_classes 506: end 507: 508: cls = all[name] 509: 510: if !cls 511: cls = class_type.new(name, superclass) 512: all[name] = cls unless @done_documenting 513: end 514: 515: puts "Adding class/module #{name} to #{@name}" if $DEBUG_RDOC 516: 517: collection[name] = cls unless @done_documenting 518: 519: cls.parent = self 520: end 521: 522: cls 523: end
# File doc-tmp/rdoc/code_objects.rb, line 541 541: def find_class_or_module_named(symbol) 542: @@all_classes.each_value {|c| return c if c.name == symbol} 543: @@all_modules.each_value {|m| return m if m.name == symbol} 544: nil 545: end
# File code_objects.rb, line 541 541: def find_class_or_module_named(symbol) 542: @@all_classes.each_value {|c| return c if c.name == symbol} 543: @@all_modules.each_value {|m| return m if m.name == symbol} 544: nil 545: end
# File parsers/parse_f95.rb, line 766 766: def find_class_or_module_named(symbol, ignore_case=nil) 767: if !ignore_case 768: @@all_classes.each_value {|c| return c if c.name == symbol} 769: @@all_modules.each_value {|m| return m if m.name == symbol} 770: else 771: @@all_classes.each_value {|c| return c if c.name.upcase == symbol.upcase} 772: @@all_modules.each_value {|m| return m if m.name.upcase == symbol.upcase} 773: end 774: nil 775: end
Find a named file
# File parsers/parse_f95.rb, line 783 783: def find_file_named(name, method=nil, ignore_case=nil) 784: return nil unless name 785: result = nil 786: @@all_files.each{|file_name, toplevel| 787: result = toplevel if file_name == name 788: } 789: dir = File.dirname(@file_relative_name) 790: @@all_files.each{|file_name, toplevel| 791: if /^#{dir}\/(.*)/ =~ file_name 792: result = toplevel if $1 == name 793: end 794: } 795: if result 796: if method 797: result_method = result.find_local_symbol(method, ignore_case) 798: return result_method 799: else 800: return result 801: end 802: else 803: return nil 804: end 805: end
# File code_objects.rb, line 537 537: def find_local_symbol(symbol) 538: find_class_or_module_named(symbol) || super 539: end
# File doc-tmp/rdoc/code_objects.rb, line 537 537: def find_local_symbol(symbol) 538: find_class_or_module_named(symbol) || super 539: end
# File parsers/parse_f95.rb, line 762 762: def find_local_symbol(symbol, ignore_case=nil) 763: find_class_or_module_named(symbol, ignore_case) || super 764: end
Find a named module
# File code_objects.rb, line 550 550: def find_module_named(name) 551: find_class_or_module_named(name) || find_enclosing_module_named(name) 552: end
Find a named module
# File doc-tmp/rdoc/code_objects.rb, line 550 550: def find_module_named(name) 551: find_class_or_module_named(name) || find_enclosing_module_named(name) 552: end
Find a named module
# File parsers/parse_f95.rb, line 778 778: def find_module_named(name, ignore_case=nil) 779: find_class_or_module_named(name, ignore_case) || find_enclosing_module_named(name, ignore_case) 780: end