In Files

  • rdoc/markup/to_html_crossref.rb

Class/Module Index [+]

Quicksearch

RDoc::Markup::ToHtmlCrossref

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.

Attributes

context[RW]

RDoc::CodeObject for generating references

show_hash[RW]

Should we show ‘#’ characters on method references?

Public Class Methods

new(from_path, context, show_hash, hyperlink_all = false, markup = nil) click to toggle source

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
            

Public Instance Methods

cross_reference(name, text = nil) click to toggle source

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
            
gen_url(url, text) click to toggle source

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
            
handle_special_CROSSREF(special) click to toggle source

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
            

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 visit Documenting-ruby.org.

blog comments powered by Disqus