diff options
author | drbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-02-12 22:23:00 +0000 |
---|---|---|
committer | drbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-02-12 22:23:00 +0000 |
commit | b797fdc7e88c5ad7552f1c95081ad3c60507e3ee (patch) | |
tree | eb49501cbc096c12759bc4d92d080dfdfd196710 /lib/rdoc/markup | |
parent | 4660cc6fb9bba765ca259bc636d59e8c3c4620b7 (diff) | |
download | ruby-b797fdc7e88c5ad7552f1c95081ad3c60507e3ee.tar.gz |
Separate HTML linking and crossreferencing into separate files.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15453 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/rdoc/markup')
-rw-r--r-- | lib/rdoc/markup/to_html.rb | 63 | ||||
-rw-r--r-- | lib/rdoc/markup/to_html_crossref.rb (renamed from lib/rdoc/markup/to_html_hyperlink.rb) | 65 |
2 files changed, 64 insertions, 64 deletions
diff --git a/lib/rdoc/markup/to_html.rb b/lib/rdoc/markup/to_html.rb index 4fe16f8e91..3a500a4f0e 100644 --- a/lib/rdoc/markup/to_html.rb +++ b/lib/rdoc/markup/to_html.rb @@ -20,10 +20,73 @@ class RDoc::Markup::ToHtml < RDoc::Markup::Formatter def initialize super + # external hyperlinks + @markup.add_special(/((link:|https?:|mailto:|ftp:|www\.)\S+\w)/, :HYPERLINK) + + # and links of the form <text>[<url>] + @markup.add_special(/(((\{.*?\})|\b\S+?)\[\S+?\.\S+?\])/, :TIDYLINK) + init_tags end ## + # Generate a hyperlink for url, labeled with text. Handle the + # special cases for img: and link: described under handle_special_HYPEDLINK + + def gen_url(url, text) + if url =~ /([A-Za-z]+):(.*)/ then + type = $1 + path = $2 + else + type = "http" + path = url + url = "http://#{url}" + end + + if type == "link" then + url = if path[0, 1] == '#' then # is this meaningful? + path + else + HTML.gen_url @from_path, path + end + end + + if (type == "http" or type == "link") and + url =~ /\.(gif|png|jpg|jpeg|bmp)$/ then + "<img src=\"#{url}\" />" + else + "<a href=\"#{url}\">#{text.sub(%r{^#{type}:/*}, '')}</a>" + end + end + + ## + # 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. + + def handle_special_HYPERLINK(special) + url = special.text + gen_url url, url + end + + ## + # Here's a hypedlink where the label is different to the URL + # <label>[url] or {long label}[url] + + def handle_special_TIDYLINK(special) + text = special.text + + return text unless text =~ /\{(.*?)\}\[(.*?)\]/ or text =~ /(\S+)\[(.*?)\]/ + + label = $1 + url = $2 + gen_url url, label + end + + ## # Set up the standard mapping of attributes to HTML tags def init_tags diff --git a/lib/rdoc/markup/to_html_hyperlink.rb b/lib/rdoc/markup/to_html_crossref.rb index 58adaa8cb0..32c922e70b 100644 --- a/lib/rdoc/markup/to_html_hyperlink.rb +++ b/lib/rdoc/markup/to_html_crossref.rb @@ -5,7 +5,7 @@ require 'rdoc/markup/to_html' # the AllReferences list. Those that are found (like AllReferences in this # comment) will be hyperlinked -class RDoc::Markup::ToHtmlHyperlink < RDoc::Markup::ToHtml +class RDoc::Markup::ToHtmlCrossref < RDoc::Markup::ToHtml attr_accessor :context @@ -29,12 +29,6 @@ class RDoc::Markup::ToHtmlHyperlink < RDoc::Markup::ToHtml )/x, :CROSSREF) - # external hyperlinks - @markup.add_special(/((link:|https?:|mailto:|ftp:|www\.)\S+\w)/, :HYPERLINK) - - # and links of the form <text>[<url>] - @markup.add_special(/(((\{.*?\})|\b\S+?)\[\S+?\.\S+?\])/, :TIDYLINK) - @from_path = from_path @context = context @show_hash = show_hash @@ -88,62 +82,5 @@ class RDoc::Markup::ToHtmlHyperlink < RDoc::Markup::ToHtml out end - ## - # Generate a hyperlink for url, labeled with text. Handle the - # special cases for img: and link: described under handle_special_HYPEDLINK - - def gen_url(url, text) - if url =~ /([A-Za-z]+):(.*)/ then - type = $1 - path = $2 - else - type = "http" - path = url - url = "http://#{url}" - end - - if type == "link" then - url = if path[0, 1] == '#' then # is this meaningful? - path - else - HTML.gen_url @from_path, path - end - end - - if (type == "http" or type == "link") and - url =~ /\.(gif|png|jpg|jpeg|bmp)$/ then - "<img src=\"#{url}\" />" - else - "<a href=\"#{url}\">#{text.sub(%r{^#{type}:/*}, '')}</a>" - end - end - - ## - # 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. - - def handle_special_HYPERLINK(special) - url = special.text - gen_url url, url - end - - ## - # Here's a hypedlink where the label is different to the URL - # <label>[url] - - def handle_special_TIDYLINK(special) - text = special.text - - return text unless text =~ /\{(.*?)\}\[(.*?)\]/ or text =~ /(\S+)\[(.*?)\]/ - - label = $1 - url = $2 - gen_url url, label - end - end |