diff options
author | naruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-12-22 08:36:30 +0000 |
---|---|---|
committer | naruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-12-22 08:36:30 +0000 |
commit | 573bd7500b2e845949ccffa2ae7d2077ddfa489f (patch) | |
tree | 373192f1c7b088c042a7c26c7dfc421dae5befda /ext/nkf/nkf.c | |
parent | eff45d2cc8a7a2fe51b04bd1c05496dbdb499a9a (diff) |
* ext/nkf/nkf-utf8.c: Update nkf.c rev:1.157.
* ext/nkf/nkf.c (rb_nkf_enc_get): replicate proper based encoding.
* ext/nkf/kconv.c (Kconv#kconv, to*): use self.encoding as from_enc
when from_enc isn't given.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14481 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/nkf/nkf.c')
-rw-r--r-- | ext/nkf/nkf.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/ext/nkf/nkf.c b/ext/nkf/nkf.c index 9877901478..4f340f0b92 100644 --- a/ext/nkf/nkf.c +++ b/ext/nkf/nkf.c @@ -64,7 +64,17 @@ rb_nkf_putchar(unsigned int c) rb_encoding* rb_nkf_enc_get(const char *name) { int idx = rb_enc_find_index(name); - if (idx < 0) idx = rb_enc_replicate(name, rb_ascii_encoding()); + if (idx < 0) { + nkf_encoding *nkf_enc = nkf_enc_find(name); + nkf_native_encoding * nkf_base_enc = nkf_enc_to_base_encoding(nkf_enc); + idx = rb_enc_find_index(nkf_enc_name(nkf_base_enc)); + if (idx < 0) { + idx = rb_enc_replicate(name, rb_ascii_encoding()); + } else { + rb_encoding *rb_enc = rb_enc_from_index(idx); + idx = rb_enc_replicate(name, rb_enc); + } + } return rb_enc_from_index(idx); } @@ -475,11 +485,11 @@ Init_nkf() rb_define_const(mNKF, "NOCONV", Qnil); rb_define_const(mNKF, "UNKNOWN", Qnil); rb_define_const(mNKF, "BINARY", rb_enc_from_encoding(rb_nkf_enc_get("BINARY"))); - rb_define_const(mNKF, "ASCII", rb_enc_from_encoding(rb_nkf_enc_get("US_ASCII"))); + rb_define_const(mNKF, "ASCII", rb_enc_from_encoding(rb_nkf_enc_get("US-ASCII"))); rb_define_const(mNKF, "JIS", rb_enc_from_encoding(rb_nkf_enc_get("ISO-2022-JP"))); rb_define_const(mNKF, "EUC", rb_enc_from_encoding(rb_nkf_enc_get("EUC-JP"))); rb_define_const(mNKF, "SJIS", rb_enc_from_encoding(rb_nkf_enc_get("Shift_JIS"))); - rb_define_const(mNKF, "UTF8", rb_enc_from_encoding(rb_nkf_enc_get("UTF-8"))); + rb_define_const(mNKF, "UTF8", rb_enc_from_encoding(rb_utf8_encoding())); rb_define_const(mNKF, "UTF16", rb_enc_from_encoding(rb_nkf_enc_get("UTF-16"))); rb_define_const(mNKF, "UTF32", rb_enc_from_encoding(rb_nkf_enc_get("UTF-32"))); |