Class: Generators::HyperlinkHtml
- Inherits:
-
SM::ToHtml
- Object
- SM::ToHtml
- Generators::HyperlinkHtml
- Defined in:
- lib/generators/templates/application/merb_core/doc/rdoc/generators/merb_generator.rb,
lib/generators/templates/application/merb_stack/doc/rdoc/generators/merb_generator.rb
Overview
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
Instance Method Summary collapse
-
#gen_url(url, text) ⇒ Object
Generate a hyperlink for url, labeled with text.
-
#handle_special_CROSSREF(special) ⇒ Object
We’re invoked when any text matches the CROSSREF pattern (defined in MarkUp).
-
#handle_special_HYPERLINK(special) ⇒ Object
And we’re invoked with a potential external hyperlink mailto: just gets inserted.
-
#handle_special_TIDYLINK(special) ⇒ Object
HEre’s a hypedlink where the label is different to the URL <label>.
-
#initialize(from_path, context) ⇒ HyperlinkHtml
constructor
We need to record the html path of our caller so we can generate correct relative paths for any hyperlinks that we find.
Constructor Details
#initialize(from_path, context) ⇒ HyperlinkHtml
We need to record the html path of our caller so we can generate correct relative paths for any hyperlinks that we find
88 89 90 91 92 93 94 95 |
# File 'lib/generators/templates/application/merb_core/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 |
Instance Method Details
#gen_url(url, text) ⇒ Object
Generate a hyperlink for url, labeled with text. Handle the special cases for img: and link: described under handle_special_HYPEDLINK
131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 |
# File 'lib/generators/templates/application/merb_core/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) ⇒ Object
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.
104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 |
# File 'lib/generators/templates/application/merb_core/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 |
#handle_special_HYPERLINK(special) ⇒ Object
And we’re invoked with a potential external hyperlink mailto: just gets inserted. http: links are checked to see if they reference an image. If so, that image gets inserted using an <img> tag. Otherwise a conventional <a href> is used. We also support a special type of hyperlink, link:, which is a reference to a local file whose path is relative to the –op directory.
162 163 164 165 |
# File 'lib/generators/templates/application/merb_core/doc/rdoc/generators/merb_generator.rb', line 162 def handle_special_HYPERLINK(special) url = special.text gen_url(url, url) end |
#handle_special_TIDYLINK(special) ⇒ Object
HEre’s a hypedlink where the label is different to the URL
<label>[url]
171 172 173 174 175 176 177 178 179 180 |
# File 'lib/generators/templates/application/merb_core/doc/rdoc/generators/merb_generator.rb', line 171 def handle_special_TIDYLINK(special) text = special.text # unless text =~ /(\S+)\[(.*?)\]/ unless text =~ /\{(.*?)\}\[(.*?)\]/ or text =~ /(\S+)\[(.*?)\]/ return text end label = $1 url = $2 gen_url(url, label) end |