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
		Add a link
		
	
		Reference in a new issue