[前][次][番号順一覧][スレッド一覧]

ruby-changes:3963

From: ko1@a...
Date: Wed, 13 Feb 2008 07:23:32 +0900 (JST)
Subject: [ruby-changes:3963] drbrain - Ruby:r15453 (trunk): Separate HTML linking and crossreferencing into separate files.

drbrain	2008-02-13 07:23:00 +0900 (Wed, 13 Feb 2008)

  New Revision: 15453

  Added files:
    trunk/lib/rdoc/markup/to_html_crossref.rb
  Removed files:
    trunk/lib/rdoc/markup/to_html_hyperlink.rb
  Modified files:
    trunk/ChangeLog
    trunk/lib/rdoc/generator.rb
    trunk/lib/rdoc/markup/to_html.rb

  Log:
    Separate HTML linking and crossreferencing into separate files.

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=15453&r2=15452&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/lib/rdoc/markup/to_html_hyperlink.rb
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/lib/rdoc/markup/to_html_crossref.rb
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/lib/rdoc/generator.rb?r1=15453&r2=15452&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/lib/rdoc/markup/to_html.rb?r1=15453&r2=15452&diff_format=u

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 15452)
+++ ChangeLog	(revision 15453)
@@ -1,3 +1,8 @@
+Wed Feb 13 07:21:23 2008  Eric Hodel  <drbrain@s...>
+
+	* 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@r...>
 
 	* parse.y (arg_concat_gen, arg_append_gen): optimize for array push.
Index: lib/rdoc/generator.rb
===================================================================
--- lib/rdoc/generator.rb	(revision 15452)
+++ lib/rdoc/generator.rb	(revision 15453)
@@ -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 @@
       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
 
Index: lib/rdoc/markup/to_html_hyperlink.rb
===================================================================
--- lib/rdoc/markup/to_html_hyperlink.rb	(revision 15452)
+++ lib/rdoc/markup/to_html_hyperlink.rb	(revision 15453)
@@ -1,149 +0,0 @@
-require 'rdoc/markup/to_html'
-
-##
-# Subclass of the RDoc::Markup::ToHtml class that supports looking up words in
-# the AllReferences list. Those that are found (like AllReferences in this
-# comment) will be hyperlinked
-
-class RDoc::Markup::ToHtmlHyperlink < RDoc::Markup::ToHtml
-
-  attr_accessor :context
-
-  ##
-  # We need to record the html path of our caller so we can generate
-  # correct relative paths for any hyperlinks that we find
-
-  def initialize(from_path, context, show_hash)
-    super()
-
-    # class names, variable names, or instance variables
-    @markup.add_special(/(
-                           # A::B.meth(**) (for operator in Fortran95)
-                           \w+(::\w+)*[.\#]\w+(\([\.\w+\*\/\+\-\=\<\>]+\))?
-                           # meth(**) (for operator in Fortran95)
-                         | \#\w+(\([.\w\*\/\+\-\=\<\>]+\))?
-                         | \b([A-Z]\w*(::\w+)*[.\#]\w+)  #    A::B.meth
-                         | \b([A-Z]\w+(::\w+)*)          #    A::B
-                         | \#\w+[!?=]?                   #    #meth_name
-                         | \\?\b\w+([_\/\.]+\w+)*[!?=]?  #    meth_name
-                         )/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
-
-    @seen = {}
-  end
-
-  ##
-  # We're invoked when any text matches the CROSSREF pattern
-  # (defined in MarkUp). If we fine the corresponding reference,
-  # generate a hyperlink. If the name we're looking for contains
-  # no punctuation, we look for it up the module/class chain. For
-  # example, HyperlinkHtml is found, even without the Generator::
-  # prefix, because we look for it in module Generator first.
-
-  def handle_special_CROSSREF(special)
-    name = special.text
-
-    return @seen[name] if @seen.include? name
-
-    if name[0,1] == '#' then
-      lookup = name[1..-1]
-      name = lookup unless @show_hash
-    else
-      lookup = name
-    end
-
-    # Find class, module, or method in class or module.
-    if /([A-Z]\w*)[.\#](\w+[!?=]?)/ =~ lookup then
-      container = $1
-      method = $2
-      ref = @context.find_symbol container, method
-    elsif /([A-Za-z]\w*)[.\#](\w+(\([\.\w+\*\/\+\-\=\<\>]+\))?)/ =~ lookup then
-      container = $1
-      method = $2
-      ref = @context.find_symbol container, method
-    else
-      ref = @context.find_symbol lookup
-    end
-
-    out = if lookup =~ /^\\/ then
-            $'
-          elsif ref and ref.document_self then
-            "<a href=\"#{ref.as_href(@from_path)}\">#{name}</a>"
-          else
-            name
-          end
-
-    @seen[name] = out
-
-    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
-
Index: lib/rdoc/markup/to_html.rb
===================================================================
--- lib/rdoc/markup/to_html.rb	(revision 15452)
+++ lib/rdoc/markup/to_html.rb	(revision 15453)
@@ -20,10 +20,73 @@
   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
Index: lib/rdoc/markup/to_html_crossref.rb
===================================================================
--- lib/rdoc/markup/to_html_crossref.rb	(revision 0)
+++ lib/rdoc/markup/to_html_crossref.rb	(revision 15453)
@@ -0,0 +1,86 @@
+require 'rdoc/markup/to_html'
+
+##
+# Subclass of the RDoc::Markup::ToHtml class that supports looking up words in
+# the AllReferences list. Those that are found (like AllReferences in this
+# comment) will be hyperlinked
+
+class RDoc::Markup::ToHtmlCrossref < RDoc::Markup::ToHtml
+
+  attr_accessor :context
+
+  ##
+  # We need to record the html path of our caller so we can generate
+  # correct relative paths for any hyperlinks that we find
+
+  def initialize(from_path, context, show_hash)
+    super()
+
+    # class names, variable names, or instance variables
+    @markup.add_special(/(
+                           # A::B.meth(**) (for operator in Fortran95)
+                           \w+(::\w+)*[.\#]\w+(\([\.\w+\*\/\+\-\=\<\>]+\))?
+                           # meth(**) (for operator in Fortran95)
+                         | \#\w+(\([.\w\*\/\+\-\=\<\>]+\))?
+                         | \b([A-Z]\w*(::\w+)*[.\#]\w+)  #    A::B.meth
+                         | \b([A-Z]\w+(::\w+)*)          #    A::B
+                         | \#\w+[!?=]?                   #    #meth_name
+                         | \\?\b\w+([_\/\.]+\w+)*[!?=]?  #    meth_name
+                         )/x,
+                        :CROSSREF)
+
+    @from_path = from_path
+    @context = context
+    @show_hash = show_hash
+
+    @seen = {}
+  end
+
+  ##
+  # We're invoked when any text matches the CROSSREF pattern
+  # (defined in MarkUp). If we fine the corresponding reference,
+  # generate a hyperlink. If the name we're looking for contains
+  # no punctuation, we look for it up the module/class chain. For
+  # example, HyperlinkHtml is found, even without the Generator::
+  # prefix, because we look for it in module Generator first.
+
+  def handle_special_CROSSREF(special)
+    name = special.text
+
+    return @seen[name] if @seen.include? name
+
+    if name[0,1] == '#' then
+      lookup = name[1..-1]
+      name = lookup unless @show_hash
+    else
+      lookup = name
+    end
+
+    # Find class, module, or method in class or module.
+    if /([A-Z]\w*)[.\#](\w+[!?=]?)/ =~ lookup then
+      container = $1
+      method = $2
+      ref = @context.find_symbol container, method
+    elsif /([A-Za-z]\w*)[.\#](\w+(\([\.\w+\*\/\+\-\=\<\>]+\))?)/ =~ lookup then
+      container = $1
+      method = $2
+      ref = @context.find_symbol container, method
+    else
+      ref = @context.find_symbol lookup
+    end
+
+    out = if lookup =~ /^\\/ then
+            $'
+          elsif ref and ref.document_self then
+            "<a href=\"#{ref.as_href(@from_path)}\">#{name}</a>"
+          else
+            name
+          end
+
+    @seen[name] = out
+
+    out
+  end
+
+end
+

Property changes on: lib/rdoc/markup/to_html_crossref.rb
___________________________________________________________________
Name: svn:eol-style
   + LF
Name: svn:keywords
   + Author Date Id Revision


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]