A Module include in a class with #include
Creates a new Include for name with comment
# File lib/rdoc/include.rb, line 16 def initialize(name, comment) super() @name = name self.comment = comment @module = nil # cache for module if found end
Includes are sorted by name
# File lib/rdoc/include.rb, line 26 def <=> other return unless self.class === other name <=> other.name end
Full name based on module
# File lib/rdoc/include.rb, line 40 def full_name m = self.module RDoc::ClassModule === m ? m.full_name : @name end
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.
# File lib/rdoc/include.rb, line 63 def module return @module if @module # search the current context return @name unless parent full_name = parent.child_name(@name) @module = RDoc::TopLevel.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 = RDoc::TopLevel.modules_hash[full_name] return @module if @module end # go up the hierarchy of names p = parent.parent while p full_name = p.child_name(@name) @module = RDoc::TopLevel.modules_hash[full_name] return @module if @module p = p.parent end @name end
Generated with the Darkfish Rdoc Generator 2.