Class: RDoc::Mixin
| Relationships & Source Files | |
| Extension / Inclusion / Inheritance Descendants | |
|
Subclasses:
|
|
| Super Chains via Extension / Inclusion / Inheritance | |
|
Class Chain:
self,
CodeObject
|
|
|
Instance Chain:
|
|
| Inherits: |
RDoc::CodeObject
|
| Defined in: | lib/rdoc/code_object/mixin.rb |
Overview
Constant Summary
Text - Included
MARKUP_FORMAT, SPACE_SEPARATED_LETTER_CLASS, TO_HTML_CHARACTERS
Class Method Summary
-
.new(name, comment) ⇒ Mixin
constructor
Creates a new
Mixinfor #name withcomment
CodeObject - Inherited
| .new | Creates a new |
Instance Attribute Summary
-
#name
rw
Name of included module.
-
#store=(store)
writeonly
Sets the store for this class or module and its contained code objects.
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 |
| #mixin_from | When mixed-in to a class, this points to the |
| #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? |
Text - Included
| #language | The language for this text. |
Instance Method Summary
-
#<=>(other)
Mixins are sorted by name.
-
#full_name
Full name based on #module
-
#module
Attempts to locate the included module object.
- #==(other) (also: #eql?) Internal use only
- #eql?(other) Internal use only
- #hash Internal use only
- #inspect Internal use only
- #to_s Internal use only
CodeObject - Inherited
| #file_name | File name where this |
| #ignore | Use this to ignore a |
| #options | The options instance from the store this |
| #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 |
| #canonical_url | The preferred URL for this object. |
| #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
| #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, | |
| #to_html_characters | Converts ampersand, dashes, ellipsis, quotes, copyright and registered trademark symbols in |
| #wrap | Wraps |
Constructor Details
.new(name, comment) ⇒ Mixin
Creates a new Mixin for #name with comment
Instance Attribute Details
#name (rw)
Name of included module
# File 'lib/rdoc/code_object/mixin.rb', line 11
attr_accessor :name
#store=(store) (writeonly)
Sets the store for this class or module and its contained code objects.
# File 'lib/rdoc/code_object/mixin.rb', line 113
def store=(store) super @file = @store.add_file @file.full_name if @file end
Instance Method Details
#<=>(other)
Mixins are sorted by name
#==(other) Also known as: #eql?
# File 'lib/rdoc/code_object/mixin.rb', line 32
def ==(other) # :nodoc: self.class === other and @name == other.name end
#eql?(other)
# File 'lib/rdoc/code_object/mixin.rb', line 36
alias eql? == # :nodoc:
#full_name
Full name based on #module
# File 'lib/rdoc/code_object/mixin.rb', line 41
def full_name m = self.module RDoc::ClassModule === m ? m.full_name : @name end
#hash
# File 'lib/rdoc/code_object/mixin.rb', line 46
def hash # :nodoc: [@name, self.module].hash end
#inspect
# File 'lib/rdoc/code_object/mixin.rb', line 50
def inspect # :nodoc: "#<%s:0x%x %s.%s %s>" % [ self.class, object_id, parent_name, self.class.name.downcase, @name, ] end
#module
Attempts to locate the included module object. Returns the name if not known.
The scoping rules of Ruby to resolve the name of an included module are:
-
first look into the children of the current context;
-
if not found, look into the children of included modules, in reverse inclusion order;
-
if still not found, go up the hierarchy of names.
This method has O(n!) behavior when the module calling include is referencing nonexistent modules. Avoid calling #module until after all the files are parsed. This behavior is due to ruby’s constant lookup behavior.
As of the beginning of October, 2011, no gem includes nonexistent modules.
When mixin is created from Parser::PrismRuby, module name is already a resolved full-path name.
# File 'lib/rdoc/code_object/mixin.rb', line 78
def module return @module if @module # search the current context return @name unless parent full_name = parent.child_name(@name) @module = @store.modules_hash[full_name] return @module if @module return @name if @name =~ /^::/ # search the includes before this one, in reverse order searched = parent.includes.take_while { |i| i != self }.reverse searched.each do |i| inc = i.module next if String === inc full_name = inc.child_name(@name) @module = @store.modules_hash[full_name] return @module if @module end # go up the hierarchy of names up = parent.parent while up full_name = up.child_name(@name) @module = @store.modules_hash[full_name] return @module if @module up = up.parent end @name end
#to_s
# File 'lib/rdoc/code_object/mixin.rb', line 119
def to_s # :nodoc: "#{self.class.name.downcase} #@name in: #{parent}" end