summaryrefslogtreecommitdiff
path: root/enc/trans
diff options
context:
space:
mode:
authorakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-08-13 05:48:57 +0000
committerakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-08-13 05:48:57 +0000
commita14d5eb09bc791b7ada7897a8fdb6a243babbb78 (patch)
treeb342f2f72bb763982d4d89001d4e8dd1d368de03 /enc/trans
parent74a2a7bdbfbf70febab024354fe0b7fb26300704 (diff)
* 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
Diffstat (limited to 'enc/trans')
-rw-r--r--enc/trans/newline.trans35
1 files changed, 35 insertions, 0 deletions
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);
}