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>
|
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.
|
* parse.y (arg_concat_gen, arg_append_gen): optimize for array push.
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
require 'cgi'
|
require 'cgi'
|
||||||
require 'rdoc'
|
require 'rdoc'
|
||||||
require 'rdoc/options'
|
require 'rdoc/options'
|
||||||
require 'rdoc/markup/to_html_hyperlink'
|
require 'rdoc/markup/to_html_crossref'
|
||||||
require 'rdoc/template'
|
require 'rdoc/template'
|
||||||
|
|
||||||
module RDoc::Generator
|
module RDoc::Generator
|
||||||
|
@ -81,7 +81,7 @@ module RDoc::Generator
|
||||||
return '' unless str
|
return '' unless str
|
||||||
|
|
||||||
unless defined? @formatter then
|
unless defined? @formatter then
|
||||||
@formatter = RDoc::Markup::ToHtmlHyperlink.new(path, self,
|
@formatter = RDoc::Markup::ToHtmlCrossref.new(path, self,
|
||||||
@options.show_hash)
|
@options.show_hash)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -20,9 +20,72 @@ class RDoc::Markup::ToHtml < RDoc::Markup::Formatter
|
||||||
def initialize
|
def initialize
|
||||||
super
|
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
|
init_tags
|
||||||
end
|
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
|
# 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
|
# the AllReferences list. Those that are found (like AllReferences in this
|
||||||
# comment) will be hyperlinked
|
# comment) will be hyperlinked
|
||||||
|
|
||||||
class RDoc::Markup::ToHtmlHyperlink < RDoc::Markup::ToHtml
|
class RDoc::Markup::ToHtmlCrossref < RDoc::Markup::ToHtml
|
||||||
|
|
||||||
attr_accessor :context
|
attr_accessor :context
|
||||||
|
|
||||||
|
@ -29,12 +29,6 @@ class RDoc::Markup::ToHtmlHyperlink < RDoc::Markup::ToHtml
|
||||||
)/x,
|
)/x,
|
||||||
:CROSSREF)
|
: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
|
@from_path = from_path
|
||||||
@context = context
|
@context = context
|
||||||
@show_hash = show_hash
|
@show_hash = show_hash
|
||||||
|
@ -88,62 +82,5 @@ class RDoc::Markup::ToHtmlHyperlink < RDoc::Markup::ToHtml
|
||||||
out
|
out
|
||||||
end
|
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
|
end
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue