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/