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

ruby-changes:3964

From: ko1@a...
Date: Wed, 13 Feb 2008 08:59:19 +0900 (JST)
Subject: [ruby-changes:3964] drbrain - Ruby:r15454 (trunk): Allow inline markup to have a leading '#' or '\', or trailing punctuation.

drbrain	2008-02-13 08:59:03 +0900 (Wed, 13 Feb 2008)

  New Revision: 15454

  Modified files:
    trunk/ChangeLog
    trunk/lib/rdoc/markup/inline.rb
    trunk/test/rdoc/test_rdoc_markup.rb
    trunk/test/rdoc/test_rdoc_markup_attribute_manager.rb

  Log:
    Allow inline markup to have a leading '#' or '\', or trailing punctuation.
    i.e. *#freeze?*, *\foo?*.


  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/test/rdoc/test_rdoc_markup.rb?r1=15454&r2=15453&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=15454&r2=15453&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/test/rdoc/test_rdoc_markup_attribute_manager.rb?r1=15454&r2=15453&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/lib/rdoc/markup/inline.rb?r1=15454&r2=15453&diff_format=u

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 15453)
+++ ChangeLog	(revision 15454)
@@ -1,3 +1,8 @@
+Wed Feb 13 08:57:21 2008  Eric Hodel  <drbrain@s...>
+
+	* lib/rdoc/markup/inline.rb:  Allow inline markup to have a leading
+	  '#' or '\', or trailing punctuation.  i.e. *#freeze?*, *\foo?*.
+
 Wed Feb 13 07:21:23 2008  Eric Hodel  <drbrain@s...>
 
 	* lib/rdoc/to_html_hyperlink.rb:  Moved linking to to_html.rb, move
Index: lib/rdoc/markup/inline.rb
===================================================================
--- lib/rdoc/markup/inline.rb	(revision 15453)
+++ lib/rdoc/markup/inline.rb	(revision 15454)
@@ -167,21 +167,20 @@
       # first do matching ones
       tags = MATCHING_WORD_PAIRS.keys.join("")
 
-      re = "(^|\\W)([#{tags}])([A-Za-z_]+?)\\2(\\W|\$)"
-#      re = "(^|\\W)([#{tags}])(\\S+?)\\2(\\W|\$)"
+      re = /(^|\W)([#{tags}])([#\\]?[\w.\/]+?\S?)\2(\W|$)/
 
-      1 while str.gsub!(Regexp.new(re)) {
-        attr = MATCHING_WORD_PAIRS[$2];
+      1 while str.gsub!(re) do
+        attr = MATCHING_WORD_PAIRS[$2]
         attrs.set_attrs($`.length + $1.length + $2.length, $3.length, attr)
-        $1 + NULL*$2.length + $3 + NULL*$2.length + $4
-      }
+        $1 + NULL * $2.length + $3 + NULL * $2.length + $4
+      end
 
       # then non-matching
-      unless WORD_PAIR_MAP.empty?
+      unless WORD_PAIR_MAP.empty? then
         WORD_PAIR_MAP.each do |regexp, attr|
-          str.gsub!(regexp) { 
+          str.gsub!(regexp) {
             attrs.set_attrs($`.length + $1.length, $2.length, attr)
-            NULL*$1.length + $2 + NULL*$3.length
+            NULL * $1.length + $2 + NULL * $3.length
           }
         end
       end
@@ -213,9 +212,8 @@
     # A \ in front of a character that would normally be processed turns off
     # processing. We do this by turning \< into <#{PROTECT}
 
-    PROTECTABLE = [ "<" << "\\" ]
+    PROTECTABLE = %w[<\\]
 
-
     def mask_protected_sequences
       protect_pattern = Regexp.new("\\\\([#{Regexp.escape(PROTECTABLE.join(''))}])")
       @str.gsub!(protect_pattern, "\\1#{PROTECT_ATTR}")
@@ -272,11 +270,15 @@
       @attrs = AttrSpan.new(@str.length)
 
       puts("After protecting, str='#{@str.dump}'") if $DEBUG_RDOC
+
       convert_attrs(@str, @attrs)
       convert_html(@str, @attrs)
       convert_specials(str, @attrs)
+
       unmask_protected_sequences
+
       puts("After flow, str='#{@str.dump}'") if $DEBUG_RDOC
+
       return split_into_flow
     end
 
Index: test/rdoc/test_rdoc_markup_attribute_manager.rb
===================================================================
--- test/rdoc/test_rdoc_markup_attribute_manager.rb	(revision 15453)
+++ test/rdoc/test_rdoc_markup_attribute_manager.rb	(revision 15454)
@@ -82,6 +82,17 @@
 
   end
 
+  def test_bold
+    assert_equal [@bold_on, 'bold', @bold_off],
+                 @am.flow("*bold*")
+
+    assert_equal [@bold_on, 'Bold:', @bold_off],
+                 @am.flow("*Bold:*")
+
+    assert_equal [@bold_on, '\\bold', @bold_off],
+                 @am.flow("*\\bold*")
+  end
+
   def test_combined
     assert_equal(["cat ", @em_on, "and", @em_off, " ", @bold_on, "dog", @bold_off],
                   @am.flow("cat _and_ *dog*"))
Index: test/rdoc/test_rdoc_markup.rb
===================================================================
--- test/rdoc/test_rdoc_markup.rb	(revision 15453)
+++ test/rdoc/test_rdoc_markup.rb	(revision 15454)
@@ -334,6 +334,20 @@
                   "L1: ListEnd\n" ])
   end
 
+  def test_list_nested_number_number
+    str = "1. one\n1. two\n   1. cat\n   1. dog"
+
+    line_groups(str,
+                [ "L1: ListStart\n",
+                  "L1: NUMBER ListItem\none",
+                  "L1: NUMBER ListItem\ntwo",
+                  "L2: ListStart\n",
+                  "L2: NUMBER ListItem\ncat",
+                  "L2: NUMBER ListItem\ndog",
+                  "L2: ListEnd\n",
+                  "L1: ListEnd\n" ])
+  end
+
   def test_list_number
     str = "1. one\n2. two\n1. three"
 

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

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