[macruby-changes] [823] MacRuby/trunk/ext/nkf/nkf.c

source_changes at macosforge.org source_changes at macosforge.org
Sat Feb 28 18:42:29 PST 2009


Revision: 823
          http://trac.macosforge.org/projects/ruby/changeset/823
Author:   lsansonetti at apple.com
Date:     2009-02-28 18:42:28 -0800 (Sat, 28 Feb 2009)
Log Message:
-----------
patch the nkf extension so that it can be loaded properly (patch by Hisakuni Fujimoto)

Modified Paths:
--------------
    MacRuby/trunk/ext/nkf/nkf.c

Modified: MacRuby/trunk/ext/nkf/nkf.c
===================================================================
--- MacRuby/trunk/ext/nkf/nkf.c	2009-02-28 21:13:53 UTC (rev 822)
+++ MacRuby/trunk/ext/nkf/nkf.c	2009-03-01 02:42:28 UTC (rev 823)
@@ -63,6 +63,7 @@
 
 rb_encoding* rb_nkf_enc_get(const char *name)
 {
+#if 0
     int idx = rb_enc_find_index(name);
     if (idx < 0) {
 	nkf_encoding *nkf_enc = nkf_enc_find(name);
@@ -75,6 +76,39 @@
 	}
     }
     return rb_enc_from_index(idx);
+#else
+	struct nkf_osx_name_enc_table { 
+	  const char*      name; 
+	  CFStringEncoding enc;
+	};
+
+	static struct nkf_osx_name_enc_table table[] = {
+	  { "BINARY",      kCFStringEncodingNonLossyASCII },
+	  { "US-ASCII",    kCFStringEncodingASCII  	},
+	  { "ISO-2022-JP", kCFStringEncodingISO_2022_JP  	},
+	  { "ISO-2022-JP-1", kCFStringEncodingISO_2022_JP_1  	},
+	  { "ISO-2022-JP-2", kCFStringEncodingISO_2022_JP_2  	},
+	  { "ISO-2022-JP-3", kCFStringEncodingISO_2022_JP_3  	},
+	  { "EUC-JP",      kCFStringEncodingEUC_JP },
+	  { "Shift_JIS",   kCFStringEncodingShiftJIS 	},
+	  { "UTF-8",       kCFStringEncodingUTF8   	},
+	  { "UTF-16",      kCFStringEncodingUTF16   },
+	  { "UTF-16BE",    kCFStringEncodingUTF16BE },
+	  { "UTF-16LE",    kCFStringEncodingUTF16LE },
+	  { "UTF-32",      kCFStringEncodingUTF32   },
+	  { "UTF-32BE",    kCFStringEncodingUTF32BE },
+	  { "UTF-32LE",    kCFStringEncodingUTF32LE },
+	  { NULL,          kCFStringEncodingNonLossyASCII }
+	};
+
+	struct nkf_osx_name_enc_table* ptr = table;
+	while (ptr->name) {
+	  if (strcmp(name, ptr->name) == 0)
+		return &(ptr->enc);
+	  ptr++;
+	}
+	return &(ptr->enc);
+#endif
 }
 
 int nkf_split_options(const char *arg)
@@ -169,7 +203,7 @@
     rb_str_set_len(result, output_ctr);
     OBJ_INFECT(result, src);
 
-    rb_enc_associate(result, rb_nkf_enc_get(nkf_enc_name(output_encoding)));
+    // rb_enc_associate(result, rb_nkf_enc_get(nkf_enc_name(output_encoding)));
 
     return result;
 }
@@ -488,7 +522,8 @@
     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_utf8_encoding()));
+    // rb_define_const(mNKF, "UTF8",	rb_enc_from_encoding(rb_utf8_encoding()));
+    rb_define_const(mNKF, "UTF8",	rb_enc_from_encoding(rb_nkf_enc_get("UTF-8")));
     rb_define_const(mNKF, "UTF16",	rb_enc_from_encoding(rb_nkf_enc_get("UTF-16BE")));
     rb_define_const(mNKF, "UTF32",	rb_enc_from_encoding(rb_nkf_enc_get("UTF-32BE")));
 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20090228/542e4a87/attachment-0001.html>


More information about the macruby-changes mailing list