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.
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 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.
# File rdoc/markup/to_html_crossref.rb, line 55
def cross_reference name, text = nil
lookup = name
name = name[1..-1] unless @show_hash if name[0, 1] == '#'
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 rdoc/markup/to_html_crossref.rb, line 99
def gen_url url, text
return super unless url =~ /\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 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.
# File rdoc/markup/to_html_crossref.rb, line 89
def handle_special_HYPERLINK special
return cross_reference $' if special.text =~ /\Ardoc-ref:/
super
end
Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.
If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.
If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.
If you want to help improve the Ruby documentation, please see Improve the docs, or visit Documenting-ruby.org.