class RDoc::TopLevel
frozen_string_literal: true
A TopLevel context is a representation of the contents of a single file
Attributes
Absolute 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.
This TopLevel's File::Stat struct
The parser class that processed this file
Relative name of this file
Public Class Methods
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.
# File lib/rdoc/top_level.rb, line 43 def initialize absolute_name, relative_name = absolute_name super() @name = nil @absolute_name = absolute_name @relative_name = relative_name @file_stat = File.stat(absolute_name) rescue nil # HACK for testing @diagram = nil @parser = nil @classes_or_modules = [] end
Public Instance Methods
An RDoc::TopLevel is equal to another with the same #relative_name
# File lib/rdoc/top_level.rb, line 64 def == other self.class === other and @relative_name == other.relative_name end
Adds an_alias
to Object
instead of
self
.
# File lib/rdoc/top_level.rb, line 73 def add_alias(an_alias) object_class.record_location self return an_alias unless @document_self object_class.add_alias an_alias end
Adds constant
to Object
instead of
self
.
# File lib/rdoc/top_level.rb, line 82 def add_constant constant object_class.record_location self return constant unless @document_self object_class.add_constant constant end
Adds include
to Object
instead of
self
.
# File lib/rdoc/top_level.rb, line 91 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
.
# File lib/rdoc/top_level.rb, line 100 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.
# File lib/rdoc/top_level.rb, line 110 def add_to_classes_or_modules mod @classes_or_modules << mod end
Base name of this file
# File lib/rdoc/top_level.rb, line 117 def base_name File.basename @relative_name end
Returns a URL for this source file on some web repository. Use the -W command line option to set.
# File lib/rdoc/generator/markup.rb, line 149 def cvs_url url = @store.rdoc.options.webcvs if /%s/ =~ url then url % @relative_name else url + @relative_name end end
Only a TopLevel that contains text file) will be displayed. See also RDoc::CodeObject#display?
# File lib/rdoc/top_level.rb, line 127 def display? text? and super end
See RDoc::TopLevel::find_class_or_module
# File lib/rdoc/top_level.rb, line 137 def find_class_or_module name @store.find_class_or_module name end
Finds a class or module named symbol
# File lib/rdoc/top_level.rb, line 144 def find_local_symbol(symbol) find_class_or_module(symbol) || super end
Finds a module or class with name
# File lib/rdoc/top_level.rb, line 151 def find_module_named(name) find_class_or_module(name) end
Returns the relative name of this file
# File lib/rdoc/top_level.rb, line 158 def full_name @relative_name end
An RDoc::TopLevel has the same hash as another with the same #relative_name
# File lib/rdoc/top_level.rb, line 166 def hash @relative_name.hash end
URL for this with a prefix
# File lib/rdoc/top_level.rb, line 173 def http_url(prefix) path = [prefix, @relative_name.tr('.', '_')] File.join(*path.compact) + '.html' end
Time this file was last modified, if known
# File lib/rdoc/top_level.rb, line 191 def last_modified @file_stat ? file_stat.mtime : nil end
Dumps this TopLevel for use by ri. See also marshal_load
# File lib/rdoc/top_level.rb, line 198 def marshal_dump [ MARSHAL_VERSION, @relative_name, @parser, parse(@comment), ] end
Returns the NormalClass “Object”, creating it if not found.
Records self
as a location in “Object”.
# File lib/rdoc/top_level.rb, line 224 def object_class @object_class ||= begin oc = @store.find_class_named('Object') || add_class(RDoc::NormalClass, 'Object') oc.record_location self oc end end
Base name of this file without the extension
# File lib/rdoc/top_level.rb, line 235 def page_name basename = File.basename @relative_name basename =~ /\.(rb|rdoc|txt|md)$/i $` || basename end
# File lib/rdoc/top_level.rb, line 55 def parser=(val) @parser = val @store.update_parser_of_file(absolute_name, val) if @store @parser end
Path to this file for use with HTML generator output.
# File lib/rdoc/top_level.rb, line 245 def path http_url @store.rdoc.generator.file_dir end
Search record used by RDoc::Generator::JsonIndex
# File lib/rdoc/top_level.rb, line 263 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?
# File lib/rdoc/top_level.rb, line 280 def text? @parser and @parser.include? RDoc::Parser::Text end