class RDoc::TopLevel
A TopLevel context is a representation of the contents of a single file
Attributes
Absolute name of this file
Base name of this file
All the classes or modules that were declared in this file. These are assigned to either classes_hash or modules_hash once we know what they really are.
Base name of this file without the extension
The parser class that processed this file
Relative name of this file
Public Class Methods
Source
# File lib/rdoc/code_object/top_level.rb, line 46 def initialize(absolute_name, relative_name = absolute_name) super() @name = nil @absolute_name = absolute_name @relative_name = relative_name @parser = nil if relative_name @base_name = File.basename(relative_name) @page_name = @base_name.sub(/\.(rb|rdoc|txt|md)\z/i, '') else @base_name = nil @page_name = nil end @classes_or_modules = [] end
Creates a new TopLevel for the file at absolute_name. If documentation is being generated outside the source dir relative_name is relative to the source directory.
RDoc::Context::new
Public Instance Methods
Source
# File lib/rdoc/code_object/top_level.rb, line 76 def ==(other) self.class === other and @relative_name == other.relative_name end
An RDoc::TopLevel is equal to another with the same relative_name
Source
# File lib/rdoc/code_object/top_level.rb, line 85 def add_alias(an_alias) object_class.record_location self return an_alias unless @document_self object_class.add_alias an_alias end
Adds an_alias to Object instead of self.
Source
# File lib/rdoc/code_object/top_level.rb, line 94 def add_constant(constant) object_class.record_location self return constant unless @document_self object_class.add_constant constant end
Adds constant to Object instead of self.
Source
# File lib/rdoc/code_object/top_level.rb, line 103 def add_include(include) object_class.record_location self return include unless @document_self object_class.add_include include end ## # Adds +method+ to +Object+ instead of +self+. def add_method(method) object_class.record_location self return method unless @document_self object_class.add_method method end ## # Adds class or module +mod+. Used in the building phase # by the Ruby parser. def add_to_classes_or_modules(mod) @classes_or_modules << mod end alias name base_name ## # See RDoc::TopLevel::find_class_or_module #-- # TODO Why do we search through all classes/modules found, not just the # ones of this instance? def find_class_or_module(name) @store.find_class_or_module name end ## # Finds a class or module named +symbol+ def find_local_symbol(symbol) find_class_or_module(symbol) || super end ## # Finds a module or class with +name+ def find_module_named(name) find_class_or_module(name) end ## # Returns the relative name of this file def full_name @relative_name end ## # An RDoc::TopLevel has the same hash as another with the same # relative_name def hash @relative_name.hash end ## # URL for this with a +prefix+ def http_url @relative_name.tr('.', '_') + '.html' end def inspect # :nodoc: "#<%s:0x%x %p modules: %p classes: %p>" % [ self.class, object_id, base_name, @modules.map { |n, m| m }, @classes.map { |n, c| c } ] end ## # Dumps this TopLevel for use by ri. See also #marshal_load def marshal_dump [ MARSHAL_VERSION, @relative_name, @parser, parse(@comment), ] end ## # Loads this TopLevel from +array+. def marshal_load(array) # :nodoc: initialize array[1] @parser = array[2] @comment = RDoc::Comment.from_document array[3] end ## # Returns the NormalClass "Object", creating it if not found. # # Records +self+ as a location in "Object". def object_class @object_class ||= begin oc = @store.find_class_named('Object') || add_class(RDoc::NormalClass, 'Object') oc.record_location self oc end end ## # Path to this file for use with HTML generator output. def path prefix = options.file_path_prefix return http_url unless prefix File.join(prefix, http_url) end def pretty_print(q) # :nodoc: q.group 2, "[#{self.class}: ", "]" do q.text "base name: #{base_name.inspect}" q.breakable items = @modules.map { |n, m| m } items.concat @modules.map { |n, c| c } q.seplist items do |mod| q.pp mod end end end ## # Search record used by RDoc::Generator::JsonIndex def search_record return unless @parser < RDoc::Parser::Text [ page_name, '', page_name, '', path, '', snippet(@comment), ] end ## # Is this TopLevel from a text file instead of a source code file? def text? @parser and @parser.include? RDoc::Parser::Text end def to_s # :nodoc: "file #{full_name}" end end
Adds include to Object instead of self.
Source
# File lib/rdoc/code_object/top_level.rb, line 112 def add_method(method) object_class.record_location self return method unless @document_self object_class.add_method method end
Adds method to Object instead of self.
Source
# File lib/rdoc/code_object/top_level.rb, line 122 def add_to_classes_or_modules(mod) @classes_or_modules << mod end
Adds class or module mod. Used in the building phase by the Ruby parser.
Source
# File lib/rdoc/generator/markup.rb, line 161 def cvs_url url = @store.options.webcvs if /%s/ =~ url then url % @relative_name else url + @relative_name end end
Returns a URL for this source file on some web repository. Use the -W command line option to set.
Source
# File lib/rdoc/code_object/top_level.rb, line 134 def find_class_or_module(name) @store.find_class_or_module name end
See RDoc::TopLevel::find_class_or_module
Source
# File lib/rdoc/code_object/top_level.rb, line 141 def find_local_symbol(symbol) find_class_or_module(symbol) || super end
Finds a class or module named symbol
RDoc::Context#find_local_symbol
Source
# File lib/rdoc/code_object/top_level.rb, line 148 def find_module_named(name) find_class_or_module(name) end
Finds a module or class with name
Source
# File lib/rdoc/code_object/top_level.rb, line 155 def full_name @relative_name end
Returns the relative name of this file
Source
# File lib/rdoc/code_object/top_level.rb, line 163 def hash @relative_name.hash end
An RDoc::TopLevel has the same hash as another with the same relative_name
Source
# File lib/rdoc/code_object/top_level.rb, line 170 def http_url @relative_name.tr('.', '_') + '.html' end
URL for this with a prefix
Source
# File lib/rdoc/code_object/top_level.rb, line 186 def marshal_dump [ MARSHAL_VERSION, @relative_name, @parser, parse(@comment), ] end
Dumps this TopLevel for use by ri. See also marshal_load
Source
# File lib/rdoc/code_object/top_level.rb, line 210 def object_class @object_class ||= begin oc = @store.find_class_named('Object') || add_class(RDoc::NormalClass, 'Object') oc.record_location self oc end end
Returns the NormalClass “Object”, creating it if not found.
Records self as a location in “Object”.
Source
# File lib/rdoc/code_object/top_level.rb, line 67 def parser=(val) @parser = val @store.update_parser_of_file(absolute_name, val) if @store @parser end
Sets the parser for this toplevel context, also the store.
Source
# File lib/rdoc/code_object/top_level.rb, line 221 def path prefix = options.file_path_prefix return http_url unless prefix File.join(prefix, http_url) end
Path to this file for use with HTML generator output.
Source
# File lib/rdoc/code_object/top_level.rb, line 241 def search_record return unless @parser < RDoc::Parser::Text [ page_name, '', page_name, '', path, '', snippet(@comment), ] end
Search record used by RDoc::Generator::JsonIndex