Parent

Generators::HyperlinkHtml

Subclass of the SM::ToHtml class that supports looking up words in the AllReferences list. Those that are found (like AllReferences in this comment) will be hyperlinked


Subclass of the SM::ToHtml class that supports looking up words in the AllReferences list. Those that are found (like AllReferences in this comment) will be hyperlinked

Public Class Methods

new(from_path, context) click to toggle source

We need to record the html path of our caller so we can generate correct relative paths for any hyperlinks that we find

# File lib/generators/templates/application/merb_stack/doc/rdoc/generators/merb_generator.rb, line 88
def initialize(from_path, context)
    super()
    @from_path = from_path

    @parent_name = context.parent_name
    @parent_name += "::" if @parent_name
    @context = context
end

Public Instance Methods

gen_url(url, text) click to toggle source

Generate a hyperlink for url, labeled with text. Handle the special cases for img: and link: described under handle_special_HYPEDLINK

# File lib/generators/templates/application/merb_stack/doc/rdoc/generators/merb_generator.rb, line 131
def gen_url(url, text)
    if url =~ /([A-Za-z]+):(.*)/
        type = $1
        path = $2
    else
        type = "http"
        path = url
        url  = "http://#{url}"
    end

    if type == "link"
        url = path
    end

    if (type == "http" || type == "link") && url =~ /\.(gif|png|jpg|jpeg|bmp)$/
        "<img src=\"#{url}\">"
    elsif (type == "http" || type == "link")
        "<a href=\"#{url}\" target=\"_blank\">#{text}</a>"
    else
        "<a href=\"#\" onclick=\"jsHref('#{url}');\">#{text.sub(%r{^#{type}:/*}, '')}</a>"

    end
end
handle_special_CROSSREF(special) click to toggle source

We’re invoked when any text matches the CROSSREF pattern (defined in MarkUp). If we fine the corresponding reference, generate a hyperlink. If the name we’re looking for contains no punctuation, we look for it up the module/class chain. For

example, HyperlinkHtml is found, even without the Generators

prefix, because we look for it in module Generators first.

# File lib/generators/templates/application/merb_stack/doc/rdoc/generators/merb_generator.rb, line 104
def handle_special_CROSSREF(special)
    name = special.text
    if name[0,1] == '#'
        lookup = name[1..-1]
        name = lookup unless Options.instance.show_hash
    else
        lookup = name
    end

    if /([A-Z].*)[.\#](.*)/ =~ lookup
        container = $1
        method = $2
        ref = @context.find_symbol(container, method)
    else
        ref = @context.find_symbol(lookup)
    end

    if ref and ref.document_self
        "<a href=\"index.html?a=#{ref.aref}&name=#{name}\">#{name}</a>"
    else
        name #it does not need to be a link
    end
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.