1
0
Fork 0
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:
drbrain 2008-02-12 22:23:00 +00:00
parent 4660cc6fb9
commit b797fdc7e8
4 changed files with 71 additions and 66 deletions

View file

@ -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.

View file

@ -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

View file

@ -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

View file

@ -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