ruby-changes:13393
From: naruse <ko1@a...>
Date: Wed, 30 Sep 2009 00:03:16 +0900 (JST)
Subject: [ruby-changes:13393] Ruby:r25163 (trunk): Escape as \x{XXXX} other than Unicode chars.
naruse 2009-09-30 00:02:59 +0900 (Wed, 30 Sep 2009) New Revision: 25163 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=25163 Log: Escape as \x{XXXX} other than Unicode chars. * string.c (rb_str_inspect): escape as \x{XXXX} when the encoding is other than Unicode. [ruby-dev:39388] Modified files: trunk/ChangeLog trunk/string.c trunk/test/ruby/test_m17n.rb Index: ChangeLog =================================================================== --- ChangeLog (revision 25162) +++ ChangeLog (revision 25163) @@ -1,3 +1,8 @@ +Wed Sep 30 00:00:25 2009 NARUSE, Yui <naruse@r...> + + * string.c (rb_str_inspect): escape as \x{XXXX} when the encoding is + other than Unicode. [ruby-dev:39388] + Wed Sep 30 00:00:30 2009 Nobuyoshi Nakada <nobu@r...> * configure.in (THREAD_MODEL): modified message when no thread Index: string.c =================================================================== --- string.c (revision 25162) +++ string.c (revision 25163) @@ -4123,21 +4123,30 @@ char buf[11]; escape_codepoint: - if (unicode_p && c != -1) { - if (c > 0xFFFF) { - sprintf(buf, "\\u{%X}", c); + if (c == -1) { + char *q; + for (q = p-n; q < p; q++) { + sprintf(buf, "\\x%02X", *q & 0377); + str_buf_cat(result, buf, strlen(buf)); } - else { + } + else if (unicode_p) { + if (c < 0x10000) { sprintf(buf, "\\u%04X", c); } + else { + sprintf(buf, "\\u{%X}", c); + } str_buf_cat(result, buf, strlen(buf)); } else { - char *q; - for (q = p-n; q < p; q++) { - sprintf(buf, "\\x%02X", *q & 0377); - str_buf_cat(result, buf, strlen(buf)); + if (c < 0x100) { + sprintf(buf, "\\x%02X", c); } + else { + sprintf(buf, "\\x{%X}", c); + } + str_buf_cat(result, buf, strlen(buf)); } } } Index: test/ruby/test_m17n.rb =================================================================== --- test/ruby/test_m17n.rb (revision 25162) +++ test/ruby/test_m17n.rb (revision 25163) @@ -201,10 +201,10 @@ assert_equal('"\xFC\x80\x80\x80\x80 "', u("\xfc\x80\x80\x80\x80 ").inspect) - assert_equal("\"\\xA1\\x8F\\xA1\\xA1\"", e("\xa1\x8f\xa1\xa1").inspect) + assert_equal("\"\\xA1\\x{8FA1A1}\"", e("\xa1\x8f\xa1\xa1").inspect) assert_equal('"\x81."', s("\x81.").inspect) - assert_equal(s('"\x81\x40"'), s("\x81@").inspect) + assert_equal(s('"\x{8140}"'), s("\x81@").inspect) assert_equal('"\xFC"', u("\xfc").inspect) end -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/