Class: RDoc::TopLevel
| Relationships & Source Files | |
| Super Chains via Extension / Inclusion / Inheritance | |
| 
         Class Chain: 
        
          self,
           
      Context,
          CodeObject
         | 
    |
| 
         Instance Chain: 
        
       | 
    |
| Inherits: | 
        RDoc::Context
        
  | 
    
| Defined in: | lib/rdoc/top_level.rb, lib/rdoc/generator/markup.rb  | 
    
Overview
A TopLevel context is a representation of the contents of a single file
Constant Summary
- 
    MARSHAL_VERSION =
    Internal use only
    
# File 'lib/rdoc/top_level.rb', line 70 
Text - Included
  MARKUP_FORMAT, TO_HTML_CHARACTERS
Context - Inherited
  
Class Method Summary
- 
    
      .new(absolute_name, relative_name = absolute_name)  ⇒ TopLevel 
    
    constructor
    
Creates a new
TopLevelfor the file at #absolute_name. 
Context - Inherited
| .new | Creates an unnamed empty context with public current visibility.  | 
    
CodeObject - Inherited
| .new | Creates a new   | 
    
Instance Attribute Summary
- 
    
      #absolute_name  
    
    rw
    
Absolute name of this file.
 - 
    
      #classes_or_modules  
    
    readonly
    
All the classes or modules that were declared in this file.
 - 
    
      #display?  ⇒ Boolean 
    
    readonly
    
Only a
TopLevelthat contains text file) will be displayed. - 
    
      #file_stat  
    
    rw
    
This TopLevel’s
File::Statstruct. - 
    
      #parser  
    
    rw
    
The parser class that processed this file.
 - #parser=(val) rw
 - 
    
      #relative_name  
    
    rw
    
Relative name of this file.
 - 
    
      #text?  ⇒ Boolean 
    
    readonly
    
Is this
TopLevelfrom a text file instead of a source code file? - #diagram rw Internal use only
 
Context - Inherited
| #aliases | Class/module aliases.  | 
    
| #attributes | All attr* methods.  | 
    
| #block_params | Block params to be used in the next   | 
    
| #constants | Constants defined.  | 
    
| #constants_hash | Hash of registered constants.  | 
    
| #current_line_visibility= | Current visibility of this line.  | 
    
| #current_section | The current documentation section that new items will be added to.  | 
    
| #current_section= | Sets the current documentation section of documentation.  | 
    
| #extends | Modules this context is extended with.  | 
    
| #external_aliases | Aliases that could not be resolved.  | 
    
| #fully_documented? | Does this context and its methods and constants all have documentation?  | 
    
| #in_files | Files this context is found in.  | 
    
| #includes | Modules this context includes.  | 
    
| #method_list | Methods defined in this context.  | 
    
| #methods_hash | Hash of registered methods.  | 
    
| #name | Name of this class excluding namespace.  | 
    
| #ongoing_visibility= | Changes the visibility for new methods to   | 
    
| #params | Params to be used in the next   | 
    
| #remove_from_documentation? | Should we remove this context from the documentation?  | 
    
| #requires | Files this context requires.  | 
    
| #temporary_section | Use this section for the next method, attribute or constant added.  | 
    
| #unmatched_alias_lists | Hash   | 
    
| #visibility | Current visibility of this context.  | 
    
CodeObject - Inherited
| #comment | Our comment.  | 
    
| #comment= | Replaces our comment with   | 
    
| #display? | Should this   | 
    
| #document_children | Do we document our children?  | 
    
| #document_children= | Enables or disables documentation of this CodeObject’s children unless it has been turned off by :enddoc:  | 
    
| #document_self | Do we document ourselves?  | 
    
| #document_self= | Enables or disables documentation of this   | 
    
| #documented? | Does this object have a comment with content or is   | 
    
| #done_documenting | Are we done documenting (ie, did we come across a :enddoc:)?  | 
    
| #done_documenting= | Turns documentation on/off, and turns on/off   | 
    
| #file | Which file this code object was defined in.  | 
    
| #force_documentation | Force documentation of this   | 
    
| #force_documentation= | Force the documentation of this object unless documentation has been turned off by :enddoc:  | 
    
| #full_name= | Sets the full_name overriding any computed full name.  | 
    
| #ignored? | Has this class been ignored?  | 
    
| #line | Line in   | 
    
| #metadata | Hash of arbitrary metadata for this   | 
    
| #parent | Our parent   | 
    
| #parent= | Sets the parent   | 
    
| #received_nodoc | Did we ever receive a   | 
    
| #section | The section this   | 
    
| #section= | Set the section this   | 
    
| #store | The   | 
    
| #store= | Sets the   | 
    
| #suppressed? | Has this class been suppressed?  | 
    
| #viewer | We are the model of the code, but we know that at some point we will be worked on by viewers.  | 
    
Text - Included
Instance Method Summary
- 
    
      #==(other)  
      (also: #eql?)
    
    
An
TopLevelis equal to another with the same relative_name. - 
    
      #add_alias(an_alias)  
    
    
Adds
an_aliastoObjectinstead ofself. - 
    
      #add_constant(constant)  
    
    
Adds
constanttoObjectinstead ofself. - 
    
      #add_include(include)  
    
    
Adds
includetoObjectinstead ofself. - 
    
      #add_method(method)  
    
    
Adds
methodtoObjectinstead ofself. - 
    
      #add_to_classes_or_modules(mod)  
    
    
Adds class or module
mod. - 
    
      #base_name  
      (also: #name)
    
    
Base name of this file.
 - 
    
      #cvs_url  
    
    
Returns a URL for this source file on some web repository.
 - #eql?(other)
 - #find_class_or_module(name)
 - 
    
      #find_local_symbol(symbol)  
    
    
Finds a class or module named
symbol - 
    
      #find_module_named(name)  
    
    
Finds a module or class with #name
 - 
    
      #full_name  
    
    
Returns the relative name of this file.
 - 
    
      #hash  
    
    
An
TopLevelhas the same hash as another with the same relative_name. - 
    
      #http_url(prefix)  
    
    
URL for this with a
prefix - 
    
      #last_modified  
    
    
Time this file was last modified, if known.
 - 
    
      #marshal_dump  
    
    
Dumps this
TopLevelfor use by ri. - 
    
      #name  
    
    
Aliasfor #base_name. - 
    
      #object_class  
    
    
Returns the
NormalClass“Object”, creating it if not found. - 
    
      #page_name  
    
    
Base name of this file without the extension.
 - 
    
      #path  
    
    
Path to this file for use with HTML generator output.
 - 
    
      #search_record  
    
    
Search record used by
Generator::JsonIndex - #inspect Internal use only
 - 
    
      #marshal_load(array)  
    
    Internal use only
    
Loads this
TopLevelfromarray. - #pretty_print(q) Internal use only
 - #to_s Internal use only
 
Context - Inherited
| #<=> | Contexts are sorted by full_name.  | 
    
| #add | Adds an item of type   | 
    
| #add_alias | Adds   | 
    
| #add_attribute | Adds   | 
    
| #add_class | Adds a class named   | 
    
| #add_class_or_module | Adds the class or module   | 
    
| #add_constant | Adds   | 
    
| #add_extend | Adds extension module   | 
    
| #add_include | Adds included module   | 
    
| #add_method | Adds   | 
    
| #add_module | Adds a module named #name.  | 
    
| #add_module_alias | Adds an alias from   | 
    
| #add_module_by_normal_module | Adds a module by   | 
    
| #add_require | Adds   | 
    
| #add_section | Returns a section with   | 
    
| #add_to | Adds   | 
    
| #any_content | Is there any content?  | 
    
| #child_name | Creates the full name for a child with #name  | 
    
| #class_attributes | Class attributes.  | 
    
| #class_method_list | Class methods.  | 
    
| #classes | Array of classes in this context.  | 
    
| #classes_and_modules | All classes and modules in this namespace.  | 
    
| #classes_hash | Hash of classes keyed by class name.  | 
    
| #defined_in? | Is part of this thing was defined in   | 
    
| #each_attribute | Iterator for attributes.  | 
    
| #each_classmodule | Iterator for classes and modules.  | 
    
| #each_constant | Iterator for constants.  | 
    
| #each_extend | Iterator for extension modules.  | 
    
| #each_include | Iterator for included modules.  | 
    
| #each_method | Iterator for methods.  | 
    
| #each_section | Iterator for each section’s contents sorted by title.  | 
    
| #find_attribute | Finds an attribute #name with singleton value   | 
    
| #find_attribute_named | Finds an attribute with #name in this context.  | 
    
| #find_class_method_named | Finds a class method with #name in this context.  | 
    
| #find_constant_named | Finds a constant with #name in this context.  | 
    
| #find_enclosing_module_named | Find a module at a higher scope.  | 
    
| #find_external_alias | Finds an external alias #name with singleton value   | 
    
| #find_external_alias_named | Finds an external alias with #name in this context.  | 
    
| #find_file_named | Finds a file with #name in this context.  | 
    
| #find_instance_method_named | Finds an instance method with #name in this context.  | 
    
| #find_local_symbol | Finds a method, constant, attribute, external alias, module or file named   | 
    
| #find_method | Finds a method named #name with singleton value   | 
    
| #find_method_named | Finds a instance or module method with #name in this context.  | 
    
| #find_module_named | Find a module with #name using ruby’s scoping rules.  | 
    
| #find_symbol | Look up   | 
    
| #find_symbol_module | Look up a module named   | 
    
| #full_name | The full name for this context.  | 
    
| #http_url | URL for this with a   | 
    
| #initialize_methods_etc | Sets the defaults for methods and so-forth.  | 
    
| #instance_attributes | Instance attributes.  | 
    
| #instance_method_list | Instance methods.  | 
    
| #instance_methods | Instance methods.  | 
    
| #methods_by_type | Breaks method_list into a nested hash by type (  | 
    
| #methods_matching | Yields AnyMethod and   | 
    
| #modules | Array of modules in this context.  | 
    
| #modules_hash | Hash of modules keyed by module name.  | 
    
| #name_for_path | Name to use to generate the url.  | 
    
| #record_location | Record   | 
    
| #remove_invisible | Removes methods and attributes with a visibility less than   | 
    
| #resolve_aliases | Tries to resolve unmatched aliases when a method or attribute has just been added.  | 
    
| #section_contents | Returns   | 
    
| #sections | Sections in this context.  | 
    
| #set_constant_visibility_for | Given an array   | 
    
| #set_current_section | Sets the current section to a section with   | 
    
| #set_visibility_for | Given an array   | 
    
| #sort_sections | Sorts sections alphabetically (default) or in   | 
    
| #top_level | Return the   | 
    
| #upgrade_to_class | Upgrades NormalModule   | 
    
| #display, | |
| #each_ancestor | Iterator for ancestors for duck-typing.  | 
    
| #remove_invisible_in | Only called when min_visibility ==   | 
    
| #sections_hash, #to_s | |
CodeObject - Inherited
| #each_parent | Yields each parent of this   | 
    
| #file_name | File name where this   | 
    
| #ignore | Use this to ignore a   | 
    
| #options | The options instance from the store this   | 
    
| #parent_file_name | File name of our parent.  | 
    
| #parent_name | Name of our parent.  | 
    
| #record_location | Records the   | 
    
| #start_doc | Enable capture of documentation unless documentation has been turned off by :enddoc:  | 
    
| #stop_doc | Disable capture of documentation.  | 
    
| #suppress | Use this to suppress a   | 
    
| #initialize_visibility | Initializes state for visibility of this   | 
    
Generator::Markup - Included
| #aref_to | Generates a relative URL from this object’s path to   | 
    
| #as_href | Generates a relative URL from   | 
    
| #cvs_url | Build a webcvs URL starting for the given   | 
    
| #description | Handy wrapper for marking up this object’s comment.  | 
    
| #formatter | Creates an   | 
    
Text - Included
| #expand_tabs | Expands tab characters in   | 
    
| #flush_left | Flush   | 
    
| #markup | Convert a string in markup format into HTML.  | 
    
| #normalize_comment | Strips hashes, expands tabs then flushes   | 
    
| #parse | Normalizes   | 
    
| #snippet | The first   | 
    
| #strip_hashes | Strips leading # characters from   | 
    
| #strip_newlines | Strips leading and trailing n characters from   | 
    
| #strip_stars | Strips /* */ style comments.  | 
    
| #to_html | Converts ampersand, dashes, ellipsis, quotes, copyright and registered trademark symbols in   | 
    
| #wrap | Wraps   | 
    
Constructor Details
    .new(absolute_name, relative_name = absolute_name)  ⇒ TopLevel 
  
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
Instance Attribute Details
#absolute_name (rw)
Absolute name of this file
# File 'lib/rdoc/top_level.rb', line 22
attr_accessor :absolute_name
#classes_or_modules (readonly)
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.
# File 'lib/rdoc/top_level.rb', line 29
attr_reader :classes_or_modules
#diagram (rw)
# File 'lib/rdoc/top_level.rb', line 31
attr_accessor :diagram # :nodoc:
    #display?  ⇒ Boolean  (readonly)
  
Only a TopLevel that contains text file) will be displayed.  See also CodeObject#display?
# File 'lib/rdoc/top_level.rb', line 127
def display? text? and super end
#file_stat (rw)
This TopLevel’s File::Stat struct
# File 'lib/rdoc/top_level.rb', line 12
attr_accessor :file_stat
#parser (rw)
The parser class that processed this file
# File 'lib/rdoc/top_level.rb', line 36
attr_reader :parser
#parser=(val) (rw)
[ GitHub ]# 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
#relative_name (rw)
Relative name of this file
# File 'lib/rdoc/top_level.rb', line 17
attr_accessor :relative_name
    #text?  ⇒ Boolean  (readonly)
  
Is this TopLevel from a text file instead of a source code file?
Instance Method Details
#==(other) Also known as: #eql?
An 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
#add_alias(an_alias)
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
#add_constant(constant)
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
#add_include(include)
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
#add_method(method)
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
#add_to_classes_or_modules(mod)
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 Also known as: #name
Base name of this file
# File 'lib/rdoc/top_level.rb', line 117
def base_name File.basename @relative_name end
#cvs_url
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..webcvs if /%s/ =~ url then url % @relative_name else url + @relative_name end end
#eql?(other)
[ GitHub ]# File 'lib/rdoc/top_level.rb', line 68
alias eql? ==
#find_class_or_module(name)
See #find_class_or_module
#find_local_symbol(symbol)
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
#find_module_named(name)
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
#full_name
Returns the relative name of this file
# File 'lib/rdoc/top_level.rb', line 158
def full_name @relative_name end
#hash
An 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
#http_url(prefix)
URL for this with a prefix
#inspect
# File 'lib/rdoc/top_level.rb', line 179
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
#last_modified
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
#marshal_dump
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
#marshal_load(array)
Loads this TopLevel from array.
# File 'lib/rdoc/top_level.rb', line 210
def marshal_load array # :nodoc: initialize array[1] @parser = array[2] @comment = array[3] @file_stat = nil end
#name
Alias for #base_name.
# File 'lib/rdoc/top_level.rb', line 121
alias name base_name
#object_class
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
#page_name
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
#path
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
#pretty_print(q)
#search_record
Search record used by Generator::JsonIndex
#to_s
# File 'lib/rdoc/top_level.rb', line 284
def to_s # :nodoc: "file #{full_name}" end