mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
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
This commit is contained in:
parent
4660cc6fb9
commit
b797fdc7e8
4 changed files with 71 additions and 66 deletions
|
@ -1,3 +1,8 @@
|
|||
Wed Feb 13 07:21:23 2008 Eric Hodel <drbrain@segment7.net>
|
||||
|
||||
* lib/rdoc/to_html_hyperlink.rb: Moved linking to to_html.rb, move
|
||||
crossref to to_html_crossref.rb
|
||||
|
||||
Wed Feb 13 04:15:44 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* parse.y (arg_concat_gen, arg_append_gen): optimize for array push.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
require 'cgi'
|
||||
require 'rdoc'
|
||||
require 'rdoc/options'
|
||||
require 'rdoc/markup/to_html_hyperlink'
|
||||
require 'rdoc/markup/to_html_crossref'
|
||||
require 'rdoc/template'
|
||||
|
||||
module RDoc::Generator
|
||||
|
@ -81,7 +81,7 @@ module RDoc::Generator
|
|||
return '' unless str
|
||||
|
||||
unless defined? @formatter then
|
||||
@formatter = RDoc::Markup::ToHtmlHyperlink.new(path, self,
|
||||
@formatter = RDoc::Markup::ToHtmlCrossref.new(path, self,
|
||||
@options.show_hash)
|
||||
end
|
||||
|
||||
|
|
|
@ -20,9 +20,72 @@ 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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
Loading…
Add table
Reference in a new issue