If the reference is found and name is not documented text
will be returned. If name is escaped name is returned.
If name is not found text is returned.
# File lib/rdoc/cross_reference.rb, line 124
def resolve name, text
return @seen[name] if @seen.include? name
if /#{CLASS_REGEXP_STR}([.#]|::)#{METHOD_REGEXP_STR}/ =~ name then
type = $2
type = '' if type == '.' # will find either #method or ::method
method = "#{type}#{$3}"
container = @context.find_symbol_module($1)
elsif /^([.#]|::)#{METHOD_REGEXP_STR}/ =~ name then
type = $1
type = '' if type == '.'
method = "#{type}#{$2}"
container = @context
else
container = nil
end
if container then
ref = container.find_local_symbol method
unless ref || RDoc::TopLevel === container then
ref = container.find_ancestor_local_symbol method
end
end
ref = case name
when /^\\(#{CLASS_REGEXP_STR})$/ then
@context.find_symbol $1
else
@context.find_symbol name
end unless ref
# Try a page name
ref = @store.page name if not ref and name =~ /^\w+$/
ref = nil if RDoc::Alias === ref # external alias, can't link to it
out = if name == '\' then
name
elsif name =~ /^\\/ then
# we remove the \ only in front of what we know:
# other backslashes are treated later, only outside of <tt>
ref ? $' : name
elsif ref then
if ref.display? then
ref
else
text
end
else
text
end
@seen[name] = out
out
end