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

ruby-changes:6367

From: akr <ko1@a...>
Date: Sat, 5 Jul 2008 08:33:26 +0900 (JST)
Subject: [ruby-changes:6367] Ruby:r17882 (trunk): * re.c (unescape_nonascii): make regexp fixed_encoding if \p is used.

akr	2008-07-05 08:33:04 +0900 (Sat, 05 Jul 2008)

  New Revision: 17882

  Modified files:
    trunk/ChangeLog
    trunk/re.c
    trunk/test/ruby/test_m17n.rb

  Log:
    * re.c (unescape_nonascii): make regexp fixed_encoding if \p is used.
      fixed [ruby-core:17279].


  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=17882

Index: re.c
===================================================================
--- re.c	(revision 17881)
+++ re.c	(revision 17882)
@@ -2163,6 +2163,12 @@
                     break;
                 }
 
+              case 'p': /* \p{Hiragana} */
+                if (!*encp) {
+                    *encp = enc;
+                }
+                goto escape_asis;
+
               default: /* \n, \\, \d, \9, etc. */
 escape_asis:
                 smallbuf[0] = '\\';
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 17881)
+++ ChangeLog	(revision 17882)
@@ -1,3 +1,8 @@
+Sat Jul  5 08:29:47 2008  Tanaka Akira  <akr@f...>
+
+	* re.c (unescape_nonascii): make regexp fixed_encoding if \p is used.
+	  fixed [ruby-core:17279].
+
 Fri Jul  4 23:12:53 2008  Masaki Suketa  <masaki.suketa@n...>
 
 	* ext/win32ole/win32ole.c (d2time): fix the bug of VT_DATE 
Index: test/ruby/test_m17n.rb
===================================================================
--- test/ruby/test_m17n.rb	(revision 17881)
+++ test/ruby/test_m17n.rb	(revision 17882)
@@ -493,6 +493,25 @@
     assert_match(/[[:space:]]/, "\u{00a0}")
   end
 
+  def test_regexp_property
+    s = '\p{Hiragana}'.force_encoding("euc-jp")
+    assert_equal(Encoding::EUC_JP, s.encoding)
+    r = nil
+    assert_nothing_raised {
+      r = Regexp.new(s)
+    }
+    assert(r.fixed_encoding?)
+    assert_match(r, "\xa4\xa2".force_encoding("euc-jp"))
+
+    r = eval('/\p{Hiragana}/'.force_encoding("euc-jp"))
+    assert(r.fixed_encoding?)
+    assert_match(r, "\xa4\xa2".force_encoding("euc-jp"))
+
+    r = /\p{Hiragana}/e
+    assert(r.fixed_encoding?)
+    assert_match(r, "\xa4\xa2".force_encoding("euc-jp"))
+  end
+
   def test_regexp_embed_preprocess
     r1 = /\xa4\xa2/e
     r2 = /#{r1}/

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

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