mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Import RDoc 3
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30249 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
d7effd506f
commit
2ef9c50c6e
106 changed files with 8878 additions and 4179 deletions
|
@ -17,6 +17,7 @@ class RDoc::Include < RDoc::CodeObject
|
|||
super()
|
||||
@name = name
|
||||
self.comment = comment
|
||||
@module = nil # cache for module if found
|
||||
end
|
||||
|
||||
##
|
||||
|
@ -52,9 +53,47 @@ class RDoc::Include < RDoc::CodeObject
|
|||
##
|
||||
# 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.
|
||||
|
||||
def module
|
||||
RDoc::TopLevel.find_module_named(@name) || @name
|
||||
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
|
||||
|
||||
def to_s # :nodoc:
|
||||
"include #@name in: #{parent}"
|
||||
end
|
||||
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue