From a14d5eb09bc791b7ada7897a8fdb6a243babbb78 Mon Sep 17 00:00:00 2001 From: akr Date: Wed, 13 Aug 2008 05:48:57 +0000 Subject: * enc/trans/newline.trans (rb_crlf_newline): new transcoder. (rb_cr_newline): new transcoder. * transcode.c (trans_open_i): one more exra room for input newline converter. (rb_trans_open): crlf newline and cr newline implemented. (Init_transcode): Encoding::Converter::CRLF_NEWLINE and Encoding::Converter::LF_NEWLINE defined. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18557 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- enc/trans/newline.trans | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) (limited to 'enc') diff --git a/enc/trans/newline.trans b/enc/trans/newline.trans index 3d33a1e323..55be6c1d54 100644 --- a/enc/trans/newline.trans +++ b/enc/trans/newline.trans @@ -47,10 +47,45 @@ rb_universal_newline = { NULL, NULL, NULL, fun_so_universal_newline }; +<% + map_crlf = {} + map_crlf["{00-09,0b-ff}"] = :nomap + map_crlf["0a"] = "0d0a" +%> + +<%= transcode_generate_node(ActionMap.parse(map_crlf), "crlf_newline") %> + +static const rb_transcoder +rb_crlf_newline = { + "", "crlf_newline", &crlf_newline, + 1, /* input_unit_length */ + 1, /* max_input */ + 2, /* max_output */ + NULL, NULL, NULL, NULL +}; + +<% + map_crlf = {} + map_crlf["{00-09,0b-ff}"] = :nomap + map_crlf["0a"] = "0d" +%> + +<%= transcode_generate_node(ActionMap.parse(map_crlf), "cr_newline") %> + +static const rb_transcoder +rb_cr_newline = { + "", "cr_newline", &cr_newline, + 1, /* input_unit_length */ + 1, /* max_input */ + 1, /* max_output */ + NULL, NULL, NULL, NULL +}; void Init_newline(void) { rb_register_transcoder(&rb_universal_newline); + rb_register_transcoder(&rb_crlf_newline); + rb_register_transcoder(&rb_cr_newline); } -- cgit v1.2.3