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/