ruby-changes:14194
From: yugui <ko1@a...>
Date: Sat, 5 Dec 2009 18:48:54 +0900 (JST)
Subject: [ruby-changes:14194] Ruby:r26015 (ruby_1_9_1): merges r25883 from trunk into ruby_1_9_1. fixes a backpor task #2168.
yugui 2009-12-05 18:40:25 +0900 (Sat, 05 Dec 2009) New Revision: 26015 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=26015 Log: merges r25883 from trunk into ruby_1_9_1. fixes a backpor task #2168. -- * enc/trans/newline.trans (fun_so_universal_newline): generate \n after \r\n detection instead of just after \r. [ruby-list:45988] [ruby-core:25881] [ruby-core:26788] Modified files: branches/ruby_1_9_1/ChangeLog branches/ruby_1_9_1/enc/trans/newline.trans branches/ruby_1_9_1/test/ruby/test_econv.rb branches/ruby_1_9_1/test/ruby/test_io_m17n.rb branches/ruby_1_9_1/version.h Index: ruby_1_9_1/ChangeLog =================================================================== --- ruby_1_9_1/ChangeLog (revision 26014) +++ ruby_1_9_1/ChangeLog (revision 26015) @@ -1,3 +1,9 @@ +Mon Nov 23 04:12:00 2009 Tanaka Akira <akr@f...> + + * enc/trans/newline.trans (fun_so_universal_newline): generate \n + after \r\n detection instead of just after \r. + [ruby-list:45988] [ruby-core:25881] [ruby-core:26788] + Tue Dec 1 12:01:13 2009 Nobuyoshi Nakada <nobu@r...> * parse.y (dyna_push_gen, dyna_pop_gen): no needs to save both of Index: ruby_1_9_1/enc/trans/newline.trans =================================================================== --- ruby_1_9_1/enc/trans/newline.trans (revision 26014) +++ ruby_1_9_1/enc/trans/newline.trans (revision 26015) @@ -48,26 +48,26 @@ if (s[0] == '\n') { if (STATE == NORMAL) { NEWLINES_MET |= MET_LF; - o[0] = '\n'; - len = 1; } else { /* JUST_AFTER_CR */ NEWLINES_MET |= MET_CRLF; - len = 0; } + o[0] = '\n'; + len = 1; STATE = NORMAL; } else { - if (STATE == JUST_AFTER_CR) + len = 0; + if (STATE == JUST_AFTER_CR) { + o[0] = '\n'; + len = 1; NEWLINES_MET |= MET_CR; + } if (s[0] == '\r') { - o[0] = '\n'; - len = 1; STATE = JUST_AFTER_CR; } else { - o[0] = s[0]; - len = 1; + o[len++] = s[0]; STATE = NORMAL; } } @@ -79,10 +79,14 @@ universal_newline_finish(void *statep, unsigned char *o, size_t osize) { unsigned char *sp = statep; - if (STATE == JUST_AFTER_CR) + int len = 0; + if (STATE == JUST_AFTER_CR) { + o[0] = '\n'; + len = 1; NEWLINES_MET |= MET_CR; + } STATE = NORMAL; - return 0; + return len; } static const rb_transcoder @@ -91,7 +95,7 @@ TRANSCODE_TABLE_INFO, 1, /* input_unit_length */ 1, /* max_input */ - 1, /* max_output */ + 2, /* max_output */ asciicompat_converter, /* asciicompat_type */ 2, universal_newline_init, universal_newline_init, /* state_size, state_init, state_fini */ NULL, NULL, NULL, fun_so_universal_newline, Index: ruby_1_9_1/version.h =================================================================== --- ruby_1_9_1/version.h (revision 26014) +++ ruby_1_9_1/version.h (revision 26015) @@ -1,5 +1,5 @@ #define RUBY_VERSION "1.9.1" -#define RUBY_PATCHLEVEL 368 +#define RUBY_PATCHLEVEL 369 #define RUBY_VERSION_MAJOR 1 #define RUBY_VERSION_MINOR 9 #define RUBY_VERSION_TEENY 1 Index: ruby_1_9_1/test/ruby/test_io_m17n.rb =================================================================== --- ruby_1_9_1/test/ruby/test_io_m17n.rb (revision 26014) +++ ruby_1_9_1/test/ruby/test_io_m17n.rb (revision 26015) @@ -1506,7 +1506,6 @@ assert_equal("a", f.getc) assert_equal("\n", f.getc) f.binmode - assert_equal("\n", f.getc) assert_equal("b", f.getc) assert_equal("\r", f.getc) assert_equal("\n", f.getc) @@ -1526,7 +1525,6 @@ assert_equal("a", f.getc) assert_equal("\n", f.getc) f.binmode - assert_equal("\n", f.getc) assert_equal("b", f.getc) assert_equal("\r", f.getc) assert_equal("\n", f.getc) Index: ruby_1_9_1/test/ruby/test_econv.rb =================================================================== --- ruby_1_9_1/test/ruby/test_econv.rb (revision 26014) +++ ruby_1_9_1/test/ruby/test_econv.rb (revision 26015) @@ -399,7 +399,7 @@ src << "abc\r\ndef"; check_ec("abc\ndef", "", :source_buffer_empty, *a) src << "ghi\njkl"; check_ec("abc\ndefghi\njkl", "", :source_buffer_empty, *a) src << "mno\rpqr"; check_ec("abc\ndefghi\njklmno\npqr", "", :source_buffer_empty, *a) - src << "stu\r"; check_ec("abc\ndefghi\njklmno\npqrstu\n", "", :source_buffer_empty, *a) + src << "stu\r"; check_ec("abc\ndefghi\njklmno\npqrstu", "", :source_buffer_empty, *a) src << "\nvwx"; check_ec("abc\ndefghi\njklmno\npqrstu\nvwx", "", :source_buffer_empty, *a) src << "\nyz"; check_ec("abc\ndefghi\njklmno\npqrstu\nvwx\nyz", "", :source_buffer_empty, *a) end @@ -410,11 +410,25 @@ src << "abc\r\ndef"; check_ec("abc\ndef", "", :source_buffer_empty, *a) src << "ghi\njkl"; check_ec("abc\ndefghi\njkl", "", :source_buffer_empty, *a) src << "mno\rpqr"; check_ec("abc\ndefghi\njklmno\npqr", "", :source_buffer_empty, *a) - src << "stu\r"; check_ec("abc\ndefghi\njklmno\npqrstu\n", "", :source_buffer_empty, *a) + src << "stu\r"; check_ec("abc\ndefghi\njklmno\npqrstu", "", :source_buffer_empty, *a) src << "\nvwx"; check_ec("abc\ndefghi\njklmno\npqrstu\nvwx", "", :source_buffer_empty, *a) src << "\nyz"; check_ec("abc\ndefghi\njklmno\npqrstu\nvwx\nyz", "", :source_buffer_empty, *a) end + def test_universal_newline3 + ec = Encoding::Converter.new("", "", universal_newline: true) + a = ["", src="", ec, nil, 50, :partial_input=>true] + src << "abc\r\ndef"; check_ec("abc\ndef", "", :source_buffer_empty, *a) + src << "ghi\njkl"; check_ec("abc\ndefghi\njkl", "", :source_buffer_empty, *a) + src << "mno\rpqr"; check_ec("abc\ndefghi\njklmno\npqr", "", :source_buffer_empty, *a) + src << "stu\r"; check_ec("abc\ndefghi\njklmno\npqrstu", "", :source_buffer_empty, *a) + src << "\nvwx"; check_ec("abc\ndefghi\njklmno\npqrstu\nvwx", "", :source_buffer_empty, *a) + src << "\nyz"; check_ec("abc\ndefghi\njklmno\npqrstu\nvwx\nyz", "", :source_buffer_empty, *a) + src << "\r"; check_ec("abc\ndefghi\njklmno\npqrstu\nvwx\nyz", "", :source_buffer_empty, *a) + a[-1] = nil + src << ""; check_ec("abc\ndefghi\njklmno\npqrstu\nvwx\nyz\n", "", :finished, *a) + end + def test_crlf_newline ec = Encoding::Converter.new("UTF-8", "EUC-JP", crlf_newline: true) assert_econv("abc\r\ndef", :finished, 50, ec, "abc\ndef", "") -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/