RDoc::CrossReference is a reusable way to create cross references for names.
Version of CROSSREF_REGEXP used when
--hyperlink-all is specified.
Regular expression to match class references
There can be a ‘\’ in front of text to suppress the cross-reference
There can be a ‘::’ in front of class names to reference from the top-level namespace.
The method can be followed by parenthesis (not recommended)
Regular expressions matching text that should potentially have cross-reference links generated are passed to add_special. Note that these expressions are meant to pick up text for which cross-references have been suppressed, since the suppression characters are removed by the code that is triggered.
Regular expression to match method references.
See CLASS_REGEXP_STR
Hash of references that have been looked-up to their replacements
Allows cross-references to be created based on the given
context (RDoc::Context).
# File lib/rdoc/cross_reference.rb, line 103
def initialize context
  @context = context
  @seen = {}
end
						Returns a reference to name.
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 116
def resolve name, text
  return @seen[name] if @seen.include? name
  if %r#{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 %r^([.#]|::)#{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 %r^\\(#{CLASS_REGEXP_STR})$/ then
          @context.find_symbol $1
        else
          @context.find_symbol name
        end unless ref
  # Try a page name
  ref = RDoc::TopLevel.page name if not ref and name =~ %r^\w+$/
  ref = nil if RDoc::Alias === ref # external alias, can't link to it
  out = if name == '\' then
          name
        elsif name =~ %r^\\/ 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
						| / | Search | 
|---|---|
| ? | Show this help |