Subclass of the RDoc::Markup::ToHtml class that supports looking up method names, classes, etc to create links. RDoc::CrossReference is used to generate those links based on the current context.
RDoc::CodeObject for generating references
Should we show ‘#’ characters on method references?
Creates a new crossref resolver that generates links relative to
context which lives at from_path in the generated
files.  ‘#’ characters on references are removed unless
show_hash is true.  Only method names preceded by ‘#’ or ‘::’
are linked, unless hyperlink_all is true.
# File lib/rdoc/markup/to_html_crossref.rb, line 31
def initialize(from_path, context, show_hash, hyperlink_all = false,
               markup = nil)
  raise ArgumentError, 'from_path cannot be nil' if from_path.nil?
  super markup
  crossref_re = hyperlink_all ? ALL_CROSSREF_REGEXP : CROSSREF_REGEXP
  @cross_reference = RDoc::CrossReference.new context
  @markup.add_special crossref_re, :CROSSREF
  @context       = context
  @from_path     = from_path
  @hyperlink_all = hyperlink_all
  @show_hash     = show_hash
end
						Creates a link to the reference name if the name exists.  If
text is given it is used as the link text, otherwise
name is used.
# File lib/rdoc/markup/to_html_crossref.rb, line 52
def cross_reference name, text = nil
  lookup = name
  name = name[1..-1] unless @show_hash if name[0, 1] == '#'
  name = "#{CGI.unescape $'} at #{$1}" if name =~ %r(.*[^#:])@/
  text = name unless text
  link lookup, text
end
						Generates links for rdoc-ref: scheme URLs and allows RDoc::Markup::ToHtml to handle other schemes.
# File lib/rdoc/markup/to_html_crossref.rb, line 117
def gen_url url, text
  return super unless url =~ %r\Ardoc-ref:/
  cross_reference $', text
end
						We’re invoked when any text matches the CROSSREF pattern.  If we find the
corresponding reference, generate a link.  If the name we’re looking for
contains no punctuation, we look for it up the module/class chain.  For
example, ToHtml is found, even without the
RDoc::Markup:: prefix, because we look for it in module Markup first.
# File lib/rdoc/markup/to_html_crossref.rb, line 71
def handle_special_CROSSREF(special)
  name = special.text
  unless @hyperlink_all then
    # This ensures that words entirely consisting of lowercase letters will
    # not have cross-references generated (to suppress lots of erroneous
    # cross-references to "new" in text, for instance)
    return name if name =~ %r\A[a-z]*\z/
  end
  cross_reference name
end
						Handles rdoc-ref: scheme links and allows RDoc::Markup::ToHtml to handle other schemes.
# File lib/rdoc/markup/to_html_crossref.rb, line 88
def handle_special_HYPERLINK special
  return cross_reference $' if special.text =~ %r\Ardoc-ref:/
  super
end
						special is an rdoc-schemed link that will be converted into a
hyperlink. For the rdoc-ref scheme the cross-reference will be looked up
and the given name will be used.
All other contents are handled by the superclass
# File lib/rdoc/markup/to_html_crossref.rb, line 102
def handle_special_RDOCLINK special
  url = special.text
  case url
  when %r\Ardoc-ref:/ then
    cross_reference $'
  else
    super
  end
end
						Creates an HTML link to name with the given text.
# File lib/rdoc/markup/to_html_crossref.rb, line 126
def link name, text
  original_name = name
  if name =~ %r(.*[^#:])@/ then
    name = $1
    label = $'
  end
  ref = @cross_reference.resolve name, text
  text = ref.output_name @context if
    RDoc::MethodAttr === ref and text == original_name
  case ref
  when String then
    ref
  else
    path = ref.as_href @from_path
    if path =~ %r#/ then
      path << "-label-#{label}"
    else
      path << "#label-#{label}"
    end if label
    "<a href=\"#{path}\">#{text}</a>"
  end
end
						| / | Search | 
|---|---|
| ? | Show this help |