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.
[RW] | context | RDoc::CodeObject for generating references |
[RW] | show_hash | 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 ../ruby/lib/rdoc/markup/to_html_crossref.rb, line 34 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 @markup.add_special(/rdoc-ref:\S+\w/, :HYPERLINK) @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.
Generates links for rdoc-ref:
scheme URLs and allows RDoc::Markup::ToHtml to handle other schemes.
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 ../ruby/lib/rdoc/markup/to_html_crossref.rb, line 72 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 =~ /\A[a-z]*\z/ end cross_reference name end
Handles rdoc-ref:
scheme links and allows RDoc::Markup::ToHtml to handle other schemes.
Creates an HTML link to name
with the given text
.