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

ruby-changes:17721

From: naruse <ko1@a...>
Date: Tue, 9 Nov 2010 16:41:58 +0900 (JST)
Subject: [ruby-changes:17721] Ruby:r29732 (trunk): * regenc.c (onigenc_minimum_property_name_to_ctype):

naruse	2010-11-09 16:36:33 +0900 (Tue, 09 Nov 2010)

  New Revision: 29732

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

  Log:
    * regenc.c (onigenc_minimum_property_name_to_ctype):
      \p{...} should be case insensitive. [ruby-core:33000]
    
    * regenc.c (onigenc_property_list_add_property):
      ditto.
    
    * enc/euc_jp.c (init_property_list, property_name_to_ctype):
      to lowercase property names.
    
    * enc/shift_jis.c (init_property_list, property_name_to_ctype):
      ditto.

  Modified files:
    trunk/ChangeLog
    trunk/enc/euc_jp.c
    trunk/enc/shift_jis.c
    trunk/regenc.c
    trunk/test/ruby/test_m17n.rb

Index: regenc.c
===================================================================
--- regenc.c	(revision 29731)
+++ regenc.c	(revision 29732)
@@ -811,7 +811,7 @@
   len = onigenc_strlen(enc, p, end);
   for (pbe = (pb = PBS) + sizeof(PBS)/sizeof(PBS[0]); pb < pbe; ++pb) {
     if (len == pb->len &&
-        onigenc_with_ascii_strncmp(enc, p, end, pb->name, pb->len) == 0)
+        STRNCASECMP(p, pb->name, len) == 0)
       return pb->ctype;
   }
 
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 29731)
+++ ChangeLog	(revision 29732)
@@ -1,3 +1,17 @@
+Tue Nov  9 13:24:33 2010  NARUSE, Yui  <naruse@r...>
+
+	* regenc.c (onigenc_minimum_property_name_to_ctype):
+	  \p{...} should be case insensitive. [ruby-core:33000]
+
+	* regenc.c (onigenc_property_list_add_property):
+	  ditto.
+
+	* enc/euc_jp.c (init_property_list, property_name_to_ctype):
+	  to lowercase property names.
+
+	* enc/shift_jis.c (init_property_list, property_name_to_ctype):
+	  ditto.
+
 Tue Nov  9 13:29:36 2010  NAKAMURA Usaku  <usa@r...>
 
 	* win32/win32.c (overlapped_socket_io): get rid of a warning of 64bit
Index: enc/euc_jp.c
===================================================================
--- enc/euc_jp.c	(revision 29731)
+++ enc/euc_jp.c	(revision 29732)
@@ -274,8 +274,8 @@
 {
   int r;
 
-  PROPERTY_LIST_ADD_PROP("Hiragana", CR_Hiragana);
-  PROPERTY_LIST_ADD_PROP("Katakana", CR_Katakana);
+  PROPERTY_LIST_ADD_PROP("hiragana", CR_Hiragana);
+  PROPERTY_LIST_ADD_PROP("katakana", CR_Katakana);
   PropertyInited = 1;
 
  end:
@@ -286,13 +286,19 @@
 property_name_to_ctype(OnigEncoding enc, UChar* p, UChar* end)
 {
   st_data_t ctype;
+  UChar *s, *e;
 
   PROPERTY_LIST_INIT_CHECK;
 
-  if (onig_st_lookup_strend(PropertyNameTable, p, end, &ctype) == 0) {
-    return onigenc_minimum_property_name_to_ctype(enc, p, end);
+  s = e = ALLOC_N(UChar, end-p+1);
+  for (; p < end; p++) {
+    *e++ = ONIGENC_ASCII_CODE_TO_LOWER_CASE(*p);
   }
 
+  if (onig_st_lookup_strend(PropertyNameTable, s, e, &ctype) == 0) {
+    return onigenc_minimum_property_name_to_ctype(enc, s, e);
+  }
+
   return ctype;
 }
 
Index: enc/shift_jis.c
===================================================================
--- enc/shift_jis.c	(revision 29731)
+++ enc/shift_jis.c	(revision 29732)
@@ -283,8 +283,8 @@
 {
   int r;
 
-  PROPERTY_LIST_ADD_PROP("Hiragana", CR_Hiragana);
-  PROPERTY_LIST_ADD_PROP("Katakana", CR_Katakana);
+  PROPERTY_LIST_ADD_PROP("hiragana", CR_Hiragana);
+  PROPERTY_LIST_ADD_PROP("katakana", CR_Katakana);
   PropertyInited = 1;
 
  end:
@@ -295,13 +295,19 @@
 property_name_to_ctype(OnigEncoding enc, UChar* p, UChar* end)
 {
   hash_data_type ctype;
+  UChar *s, *e;
 
   PROPERTY_LIST_INIT_CHECK;
 
-  if (onig_st_lookup_strend(PropertyNameTable, p, end, &ctype) == 0) {
-    return onigenc_minimum_property_name_to_ctype(enc, p, end);
+  s = e = ALLOC_N(UChar, end-p+1);
+  for (; p < end; p++) {
+    *e++ = ONIGENC_ASCII_CODE_TO_LOWER_CASE(*p);
   }
 
+  if (onig_st_lookup_strend(PropertyNameTable, s, e, &ctype) == 0) {
+    return onigenc_minimum_property_name_to_ctype(enc, s, e);
+  }
+
   return (int)ctype;
 }
 
Index: test/ruby/test_m17n.rb
===================================================================
--- test/ruby/test_m17n.rb	(revision 29731)
+++ test/ruby/test_m17n.rb	(revision 29732)
@@ -538,6 +538,14 @@
     assert(r.fixed_encoding?)
     assert_match(r, "\xa4\xa2".force_encoding("euc-jp"))
 
+    r = /\p{AsciI}/e
+    assert(r.fixed_encoding?)
+    assert_match(r, "a".force_encoding("euc-jp"))
+
+    r = /\p{hiraganA}/e
+    assert(r.fixed_encoding?)
+    assert_match(r, "\xa4\xa2".force_encoding("euc-jp"))
+
     r = eval('/\u{3042}\p{Hiragana}/'.force_encoding("euc-jp"))
     assert(r.fixed_encoding?)
     assert_equal(Encoding::UTF_8, r.encoding)

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

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