koco-cvs Mailing List for Python Korean Codecs (Page 19)
Brought to you by:
perky
You can subscribe to this list here.
2002 |
Jan
|
Feb
|
Mar
|
Apr
(88) |
May
(5) |
Jun
|
Jul
(27) |
Aug
|
Sep
|
Oct
(5) |
Nov
|
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2003 |
Jan
(77) |
Feb
(3) |
Mar
|
Apr
(22) |
May
(123) |
Jun
(80) |
Jul
(83) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Chang <pe...@us...> - 2002-04-28 19:39:25
|
perky 02/04/28 03:27:50 Added: doc roadmap.txt Log: - Add roadmap ;) Revision Changes Path 1.1 KoreanCodecs/doc/roadmap.txt Index: roadmap.txt =================================================================== KoreanCodecs Roadmap and Significant Changes ============================================ 2.0 Initial Version 2.0.1 Changed to Python License 2.0.2 Added EUC-KR, CP949 Codecs in C implementation 2.0.3 Added korean.hangul module, StreamReader for EUC-KR and CP949 in C implementation Added hangul.format korean unicode formatting facility 2.1 Add new C-implemented codecs: ISO-2022-KR, Unijohab Clean up existing C sources. 2.1.1 Add StreamReader C extension for ISO-2022-KR Considering ----------- * hangul.romanize which converts hangul to roman letters with confirming to Korean Standard Pronunciation Convention * hangul.translate which converts roman letters to hangul with confirming to Korean Roman Character Translation Convention |
From: Chang <pe...@us...> - 2002-04-28 19:38:56
|
perky 02/04/28 02:10:09 Modified: doc quick_start.txt Log: - Mention about --without-extension option - Add usage for StreamReader and Writer Revision Changes Path 1.2 +27 -3 KoreanCodecs/doc/quick_start.txt Index: quick_start.txt =================================================================== RCS file: /cvsroot/koco/KoreanCodecs/doc/quick_start.txt,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- quick_start.txt 26 Apr 2002 12:22:17 -0000 1.1 +++ quick_start.txt 28 Apr 2002 09:10:09 -0000 1.2 @@ -1,9 +1,9 @@ Quick Start Guide for KoreanCodecs ---------------------------------- -$Id: quick_start.txt,v 1.1 2002/04/26 12:22:17 perky Exp $ +$Id: quick_start.txt,v 1.2 2002/04/28 09:10:09 perky Exp $ -(this document have EUC-KR characters) +(this document has EUC-KR characters) 1. Installation @@ -18,6 +18,10 @@ $ python setup.py install --without-aliases + * Without C Extensions + + $ python setup.py install --without-extension + 2. Encoding/Decoding @@ -50,7 +54,27 @@ >>> print _.encode("euc-kr") »¡°£ °ÍÀº »ç°ú »ç°ú´Â ¸ÀÀÖ¾î - * Hangul Module + +3. StreamReader, StreamWriter + +>>> import codecs +>>> f = codecs.open("quick_start.txt", encoding="euc-kr") +>>> lines = f.readlines() +>>> len(lines) +103 +>>> lines[25] +u'2. Encoding/Decoding\n' +>>> lines[96] +u'>>> print hangul.format(fmt, result=u("\ub7ec\uc2a4\ud2f0\ub124\uc77c"), subj1=u("\uc704\uc2a4\ud0a4"), subj2=u("\ub4dc\ub78c\ubdd4")).encode("euc-kr")\n' + +>>> f = codecs.open("testing.txt", "w", encoding="qwerty2bul") +>>> f.write(unicode("ÇΰÅÈÙ·¹ ¸ÀÀÖ´Ù", "euc-kr")) +>>> f.close() +>>> open("testing.txt").read() +'vldrjgnlffp aktdlTek' + + +4. Hangul Module >>> from korean import hangul >>> dir(hangul) |
From: Chang <pe...@us...> - 2002-04-28 19:38:55
|
perky 02/04/28 02:31:56 Modified: . setup.py Log: - Fix version detect error (with slide BETA1 tag) Revision Changes Path 1.21 +2 -2 KoreanCodecs/setup.py Index: setup.py =================================================================== RCS file: /cvsroot/koco/KoreanCodecs/setup.py,v retrieving revision 1.20 retrieving revision 1.21 diff -u -r1.20 -r1.21 --- setup.py 28 Apr 2002 08:08:04 -0000 1.20 +++ setup.py 28 Apr 2002 09:31:56 -0000 1.21 @@ -1,5 +1,5 @@ #!/usr/bin/env python -# $Id: setup.py,v 1.20 2002/04/28 08:08:04 perky Exp $ +# $Id: setup.py,v 1.21 2002/04/28 09:31:56 perky Exp $ import sys from distutils.core import setup, Extension @@ -21,7 +21,7 @@ def initialize_options (self): install.initialize_options(self) if flavors['aliases']: - if sys.hexversion >= '0x2010000': + if sys.hexversion >= 0x2010000: self.extra_path = ("korean", "import korean.aliases") else: self.extra_path = "korean" |
From: Chang <pe...@us...> - 2002-04-27 04:48:42
|
perky 02/04/26 21:48:37 Modified: src Setup.in Added: src twobytestream.c Log: - Add twobytestream which will be used by CP949, EUC-KR and Johab as StreamReader, StreamWriter, StreamReaderWriter assistant Revision Changes Path 1.3 +1 -0 KoreanCodecs/src/Setup.in Index: Setup.in =================================================================== RCS file: /cvsroot/koco/KoreanCodecs/src/Setup.in,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- Setup.in 24 Apr 2002 14:16:56 -0000 1.2 +++ Setup.in 27 Apr 2002 04:48:37 -0000 1.3 @@ -1,3 +1,4 @@ *shared* _koco _koco.c hangul hangul.c +twobytestream twobytestream.c 1.1 KoreanCodecs/src/twobytestream.c Index: twobytestream.c =================================================================== /* * twobytestream.c * * KoreanCodecs 2byte Stream C Implementations * * Author : Hye-Shik Chang <pe...@fa...> * Date : $Date: 2002/04/27 04:48:37 $ * Created : 27 April 2002 * * $Revision: 1.1 $ */ static char *version = "$Id: twobytestream.c,v 1.1 2002/04/27 04:48:37 perky Exp $"; #include "Python.h" /* List of methods defined in the module */ #define meth(name, func, doc) {name, (PyCFunction)func, METH_VARARGS, doc} static struct PyMethodDef twobytestream_methods[] = { /*meth("tbstream_read", tbstream_read, tbstream_read__doc__),*/ {NULL, NULL}, }; /* Initialization function for the module */ void inittwobytestream(void) { PyObject *m, *d; /* Create the module and add the functions */ m = Py_InitModule("twobytestream", twobytestream_methods); /* Add some symbolic constants to the module */ d = PyModule_GetDict(m); PyDict_SetItemString(d, "version", PyString_FromString(version)); /* Check for errors */ if (PyErr_Occurred()) Py_FatalError("can't initialize the twobytestream module"); } |
From: Chang <pe...@us...> - 2002-04-27 04:48:42
|
perky 02/04/26 21:48:36 Modified: . setup.py Log: - Add twobytestream which will be used by CP949, EUC-KR and Johab as StreamReader, StreamWriter, StreamReaderWriter assistant Revision Changes Path 1.18 +2 -1 KoreanCodecs/setup.py Index: setup.py =================================================================== RCS file: /cvsroot/koco/KoreanCodecs/setup.py,v retrieving revision 1.17 retrieving revision 1.18 diff -u -r1.17 -r1.18 --- setup.py 27 Apr 2002 03:27:17 -0000 1.17 +++ setup.py 27 Apr 2002 04:48:36 -0000 1.18 @@ -1,5 +1,5 @@ #!/usr/bin/env python -# $Id: setup.py,v 1.17 2002/04/27 03:27:17 perky Exp $ +# $Id: setup.py,v 1.18 2002/04/27 04:48:36 perky Exp $ import sys from distutils.core import setup, Extension @@ -51,4 +51,5 @@ ext_modules = flavors['extension'] and [ Extension("korean.c._koco", ["src/_koco.c"]), Extension("korean.c.hangul", ["src/hangul.c"]), + Extension("korean.c.twobytestream", ["src/twobytestream.c"]), ] or []) |
From: Chang <pe...@us...> - 2002-04-27 03:37:24
|
perky 02/04/26 20:37:16 Modified: test test_hangul.py Log: - make it simple(tm) Revision Changes Path 1.8 +2 -7 KoreanCodecs/test/test_hangul.py Index: test_hangul.py =================================================================== RCS file: /cvsroot/koco/KoreanCodecs/test/test_hangul.py,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- test_hangul.py 25 Apr 2002 21:13:44 -0000 1.7 +++ test_hangul.py 27 Apr 2002 03:37:16 -0000 1.8 @@ -1,8 +1,6 @@ # Hye-Shik Chang <1 March 2002> import unittest -from korean.c import hangul as c -from korean.python import hangul as python class Shield: class TestHangul(unittest.TestCase): @@ -70,13 +68,10 @@ u' \u110f\u1175\u110f\u1175') class TestHangul_CExtension(Shield.TestHangul): - def setUp(self): - self.h = c + from korean.c import hangul as h class TestHangul_PurePython(Shield.TestHangul): - def setUp(self): - self.h = python - + from korean.python import hangul as h if __name__ == '__main__': import sys |
From: Chang <pe...@us...> - 2002-04-27 03:27:44
|
perky 02/04/26 20:27:17 Modified: . setup.py Log: - Add trigger '--without-extension' not to install C extensions Revision Changes Path 1.17 +22 -13 KoreanCodecs/setup.py Index: setup.py =================================================================== RCS file: /cvsroot/koco/KoreanCodecs/setup.py,v retrieving revision 1.16 retrieving revision 1.17 diff -u -r1.16 -r1.17 --- setup.py 26 Apr 2002 11:39:35 -0000 1.16 +++ setup.py 27 Apr 2002 03:27:17 -0000 1.17 @@ -1,14 +1,21 @@ #!/usr/bin/env python -# $Id: setup.py,v 1.16 2002/04/26 11:39:35 perky Exp $ +# $Id: setup.py,v 1.17 2002/04/27 03:27:17 perky Exp $ import sys from distutils.core import setup, Extension from distutils.command.install import install -with_aliases = 1 -if '--without-aliases' in sys.argv: - with_aliases = 0 - sys.argv.remove('--without-aliases') +flavors = { + 'aliases': 1, + 'extension': 1, +} +for flname in flavors.keys(): + if '--without-'+flname in sys.argv: + sys.argv.remove('--without-'+flname) + flavors[flname] = 0 + if '--with-'+flname in sys.argv: + sys.argv.remove('--with-'+flname) + flavors[flname] = 1 class Install(install): def initialize_options (self): @@ -21,15 +28,17 @@ def finalize_options (self): org_install_lib = self.install_lib install.finalize_options(self) - self.install_libbase = self.install_lib = org_install_lib or self.install_purelib + self.install_libbase = self.install_lib = \ + org_install_lib or self.install_purelib setup (name = "KoreanCodecs", - version = "2.0.3a2", + version = "2.0.3a3", description = "Korean Codecs for Python Unicode Support", - long_description = "This package provides Unicode codecs that make " - "Python aware of Korean character encodings such as EUC-KR, CP949 " - "and ISO-2022-KR. By using this package, Korean characters can be treated " - "as a character string instead of a byte sequence.", + long_description = "This package provides Unicode codecs that " + "make Python aware of Korean character encodings such as " + "EUC-KR, CP949 and ISO-2022-KR. By using this package, " + "Korean characters can be treated as a character string " + "instead of a byte sequence.", author = "Hye-Shik Chang", author_email = "pe...@fa...", license = "Python License", @@ -39,7 +48,7 @@ 'korean.mappings', 'korean.c', 'korean.python'], - ext_modules = [ + ext_modules = flavors['extension'] and [ Extension("korean.c._koco", ["src/_koco.c"]), Extension("korean.c.hangul", ["src/hangul.c"]), - ]) + ] or []) |
From: Chang <pe...@us...> - 2002-04-26 21:11:22
|
perky 02/04/26 14:11:13 Modified: src _koco.c Added: src cp949_codec.h euckr_codec.h Removed: src cp949_codec.c euckr_codec.c Log: - Rename *codec.c to *codec.h Revision Changes Path 1.15 +5 -8 KoreanCodecs/src/_koco.c Index: _koco.c =================================================================== RCS file: /cvsroot/koco/KoreanCodecs/src/_koco.c,v retrieving revision 1.14 retrieving revision 1.15 diff -u -r1.14 -r1.15 --- _koco.c 26 Apr 2002 21:06:09 -0000 1.14 +++ _koco.c 26 Apr 2002 21:11:13 -0000 1.15 @@ -4,14 +4,14 @@ * KoreanCodecs C Implementations * * Author : Hye-Shik Chang <pe...@fa...> - * Date : $Date: 2002/04/26 21:06:09 $ + * Date : $Date: 2002/04/26 21:11:13 $ * Created : 15 March 2002 * - * $Revision: 1.14 $ + * $Revision: 1.15 $ */ static char *version = -"$Id: _koco.c,v 1.14 2002/04/26 21:06:09 perky Exp $"; +"$Id: _koco.c,v 1.15 2002/04/26 21:11:13 perky Exp $"; #define UNIFIL 0xfffd @@ -65,11 +65,8 @@ } } -#define KOCOCODEC_INCLUDE -#include "euckr_codec.c" -#include "cp949_codec.c" -#undef KOCOCODEC_INCLUDE - +#include "euckr_codec.h" +#include "cp949_codec.h" /* List of methods defined in the module */ 1.1 KoreanCodecs/src/cp949_codec.h Index: cp949_codec.h =================================================================== /* * cp949_codec.h * * KoreanCodecs CP949 Codec C Implementation * * Author : Hye-Shik Chang <pe...@fa...> * Date : $Date: 2002/04/26 21:11:13 $ * Created : 15 March 2002 * * $Revision: 1.1 $ */ static char cp949_decode__doc__[] = "CP949 decoder"; static PyObject * cp949_decode(PyObject *self, PyObject *args) { unsigned char *argstr, *srccur, *srcend; int arglen, errtype = error_strict; char *errors = NULL; Py_UNICODE *destptr, *destcur, *codemap, code; PyObject *r; if (!PyArg_ParseTuple(args, "s#|z:cp949_decode", &argstr, &arglen, &errors)) return NULL; errtype = error_type(errors); if (errtype == error_undef) return NULL; destcur = destptr = PyMem_New(Py_UNICODE, arglen+1); for (srccur = argstr, srcend = argstr + arglen; srccur < srcend; srccur++) { if ((*srccur & 0x80) && (srccur+1 < srcend)) { if (uhc_decode_hint[*srccur]) { /* UHC page0 region */ codemap = uhc_decode_map[*srccur & 0x7F]; /* codemap DOES have all maps on 0x81-0xA0, alphabet area can't on this */ if (uhc_page0_bottom <= srccur[1] && srccur[1] <= uhc_page0_top) { code = codemap[srccur[1] - uhc_page0_bottom]; if (code == UNIFIL) goto invalid; *(destcur++) = code; srccur++; /* skip 2byte */ } else goto invalid; } else if (uhc_decode_hint[srccur[1]]) { /* UHC page1 region */ codemap = uhc_decode_map[*srccur & 0x7F]; if (!codemap) goto invalid; /* srccur[1] has tested already */ code = codemap[srccur[1] - uhc_page1_bottom]; if (code == UNIFIL) goto invalid; *(destcur++) = code; srccur++; /* skip 2byte */ } else { /* ksc5601 area */ codemap = ksc5601_decode_map[*srccur & 0x7F]; if (!codemap) goto invalid; if (ksc5601_decode_bottom <= srccur[1] && srccur[1] <= ksc5601_decode_top) { code = codemap[srccur[1] - ksc5601_decode_bottom]; if (code == UNIFIL) goto invalid; *(destcur++) = code; srccur++; continue; } else { invalid: srccur++; /* skip 2byte */ switch (errtype) { case error_strict: PyMem_Del(destptr); PyErr_Format(PyExc_UnicodeError, "CP949 decoding error: invalid character \\x%02x%02x", srccur[0], srccur[1]); return NULL; break; case error_replace: *(destcur++) = UNIFIL; break; /* case error_ignore: break; */ } continue; } } } else *(destcur++) = *srccur; } r = codec_tuple(PyUnicode_FromUnicode(destptr, destcur-destptr), arglen); PyMem_Del(destptr); return r; } static char cp949_encode__doc__[] = "CP949 encoder"; static PyObject * cp949_encode(PyObject *self, PyObject *args) { Py_UNICODE *argptr, *srccur, *srcend; int arglen, errtype = error_strict; char *errors = NULL; unsigned char *destptr, *destcur, *decbuf; PyObject *r; if (!PyArg_ParseTuple(args, "u#|z:cp949_encode", &argptr, &arglen, &errors)) return NULL; errtype = error_type(errors); if (errtype == error_undef) return NULL; destcur = destptr = PyMem_New(unsigned char, arglen*2+1); for (srccur = argptr, srcend = argptr + arglen; srccur < srcend; srccur++) { if (*srccur <= 0x7F) *(destcur++) = (unsigned char)*srccur; else { decbuf = _ksc5601_encode(*srccur); if (!decbuf) decbuf = _uhc_encode(*srccur); if(decbuf == 0) { switch (errtype) { case error_strict: PyMem_Del(destptr); PyErr_Format(PyExc_UnicodeError, "CP949 encoding error: invalid character \\u%04x", *srccur); return NULL; break; case error_replace: *(destcur++) = 0xa1; *(destcur++) = 0xa1; break; /* case error_ignore: break; */ } } else { *(destcur++) = decbuf[0]; *(destcur++) = decbuf[1]; } } } r = codec_tuple(PyString_FromStringAndSize((char*)destptr, destcur - destptr), arglen); PyMem_Del(destptr); return r; } 1.1 KoreanCodecs/src/euckr_codec.h Index: euckr_codec.h =================================================================== /* * euckr_codec.h * * KoreanCodecs EUC-KR Codec C Implementation * * Author : Hye-Shik Chang <pe...@fa...> * Date : $Date: 2002/04/26 21:11:13 $ * Created : 15 March 2002 * * $Revision: 1.1 $ */ static char euc_kr_decode__doc__[] = "EUC-KR decoder"; static PyObject * euc_kr_decode(PyObject *self, PyObject *args) { unsigned char *argstr, *srccur, *srcend; int arglen, errtype = error_strict; char *errors = NULL; Py_UNICODE *destptr, *destcur, *codemap, code; PyObject *r; if (!PyArg_ParseTuple(args, "s#|z:euc_kr_decode", &argstr, &arglen, &errors)) return NULL; errtype = error_type(errors); if (errtype == error_undef) return NULL; destcur = destptr = PyMem_New(Py_UNICODE, arglen+1); for (srccur = argstr, srcend = argstr + arglen; srccur < srcend; srccur++) { if ((*srccur & 0x80) && (srccur+1 < srcend)) { codemap = ksc5601_decode_map[*srccur & 0x7F]; if (!codemap) goto invalid; if (ksc5601_decode_bottom <= srccur[1] && srccur[1] <= ksc5601_decode_top) { code = codemap[srccur[1] - ksc5601_decode_bottom]; if (code == UNIFIL) goto invalid; *(destcur++) = code; srccur++; continue; } else { invalid: srccur++; /* skip 2byte */ switch (errtype) { case error_strict: PyMem_Del(destptr); PyErr_Format(PyExc_UnicodeError, "EUC-KR decoding error: invalid character \\x%02x%02x", srccur[0], srccur[1]); return NULL; break; case error_replace: *(destcur++) = UNIFIL; break; /* case error_ignore: break; */ } continue; } } else *(destcur++) = *srccur; } r = codec_tuple(PyUnicode_FromUnicode(destptr, destcur-destptr), arglen); PyMem_Del(destptr); return r; } static char euc_kr_encode__doc__[] = "EUC-KR encoder"; static PyObject * euc_kr_encode(PyObject *self, PyObject *args) { Py_UNICODE *argptr, *srccur, *srcend; int arglen, errtype = error_strict; char *errors = NULL; unsigned char *destptr, *destcur, *decbuf; PyObject *r; if (!PyArg_ParseTuple(args, "u#|z:euc_kr_encode", &argptr, &arglen, &errors)) return NULL; errtype = error_type(errors); if (errtype == error_undef) return NULL; destcur = destptr = PyMem_New(unsigned char, arglen*2+1); for (srccur = argptr, srcend = argptr + arglen; srccur < srcend; srccur++) { if (*srccur <= 0x7F) *(destcur++) = (unsigned char)*srccur; else if((decbuf = _ksc5601_encode(*srccur)) == 0) { switch (errtype) { case error_strict: PyMem_Del(destptr); PyErr_Format(PyExc_UnicodeError, "EUC-KR encoding error: invalid character \\u%04x", *srccur); return NULL; break; case error_replace: *(destcur++) = 0xa1; *(destcur++) = 0xa1; break; /* case error_ignore: break; */ } } else { *(destcur++) = decbuf[0]; *(destcur++) = decbuf[1]; } } r = codec_tuple(PyString_FromStringAndSize((char*)destptr, destcur - destptr), arglen); PyMem_Del(destptr); return r; } |
From: Chang <pe...@us...> - 2002-04-26 21:06:17
|
perky 02/04/26 14:06:10 Modified: src _koco.c Added: src cp949_codec.c euckr_codec.c Log: - Split euc-kr and cp949 codec from _koco.c Revision Changes Path 1.14 +7 -242 KoreanCodecs/src/_koco.c Index: _koco.c =================================================================== RCS file: /cvsroot/koco/KoreanCodecs/src/_koco.c,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- _koco.c 26 Apr 2002 08:21:54 -0000 1.13 +++ _koco.c 26 Apr 2002 21:06:09 -0000 1.14 @@ -4,14 +4,14 @@ * KoreanCodecs C Implementations * * Author : Hye-Shik Chang <pe...@fa...> - * Date : $Date: 2002/04/26 08:21:54 $ + * Date : $Date: 2002/04/26 21:06:09 $ * Created : 15 March 2002 * - * $Revision: 1.13 $ + * $Revision: 1.14 $ */ static char *version = -"$Id: _koco.c,v 1.13 2002/04/26 08:21:54 perky Exp $"; +"$Id: _koco.c,v 1.14 2002/04/26 21:06:09 perky Exp $"; #define UNIFIL 0xfffd @@ -65,246 +65,11 @@ } } +#define KOCOCODEC_INCLUDE +#include "euckr_codec.c" +#include "cp949_codec.c" +#undef KOCOCODEC_INCLUDE -static char euc_kr_decode__doc__[] = "EUC-KR decoder"; - -static PyObject * -euc_kr_decode(PyObject *self, PyObject *args) -{ - unsigned char *argstr, *srccur, *srcend; - int arglen, errtype = error_strict; - char *errors = NULL; - Py_UNICODE *destptr, *destcur, *codemap, code; - PyObject *r; - - if (!PyArg_ParseTuple(args, "s#|z:euc_kr_decode", &argstr, &arglen, &errors)) - return NULL; - - errtype = error_type(errors); - if (errtype == error_undef) - return NULL; - - destcur = destptr = PyMem_New(Py_UNICODE, arglen+1); - for (srccur = argstr, srcend = argstr + arglen; srccur < srcend; srccur++) { - if ((*srccur & 0x80) && (srccur+1 < srcend)) { - codemap = ksc5601_decode_map[*srccur & 0x7F]; - if (!codemap) - goto invalid; - if (ksc5601_decode_bottom <= srccur[1] && srccur[1] <= ksc5601_decode_top) { - code = codemap[srccur[1] - ksc5601_decode_bottom]; - if (code == UNIFIL) - goto invalid; - *(destcur++) = code; - srccur++; - continue; - } else { -invalid: srccur++; /* skip 2byte */ - switch (errtype) { - case error_strict: - PyMem_Del(destptr); - PyErr_Format(PyExc_UnicodeError, - "EUC-KR decoding error: invalid character \\x%02x%02x", - srccur[0], srccur[1]); - return NULL; - break; - case error_replace: - *(destcur++) = UNIFIL; - break; - /* case error_ignore: break; */ - } - continue; - } - } else - *(destcur++) = *srccur; - } - - r = codec_tuple(PyUnicode_FromUnicode(destptr, destcur-destptr), arglen); - PyMem_Del(destptr); - return r; -} - -static char euc_kr_encode__doc__[] = "EUC-KR encoder"; - -static PyObject * -euc_kr_encode(PyObject *self, PyObject *args) -{ - Py_UNICODE *argptr, *srccur, *srcend; - int arglen, errtype = error_strict; - char *errors = NULL; - unsigned char *destptr, *destcur, *decbuf; - PyObject *r; - - if (!PyArg_ParseTuple(args, "u#|z:euc_kr_encode", &argptr, &arglen, &errors)) - return NULL; - - errtype = error_type(errors); - if (errtype == error_undef) - return NULL; - - destcur = destptr = PyMem_New(unsigned char, arglen*2+1); - for (srccur = argptr, srcend = argptr + arglen; srccur < srcend; srccur++) { - if (*srccur <= 0x7F) - *(destcur++) = (unsigned char)*srccur; - else - if((decbuf = _ksc5601_encode(*srccur)) == 0) { - switch (errtype) { - case error_strict: - PyMem_Del(destptr); - PyErr_Format(PyExc_UnicodeError, - "EUC-KR encoding error: invalid character \\u%04x", - *srccur); - return NULL; - break; - case error_replace: - *(destcur++) = 0xa1; - *(destcur++) = 0xa1; - break; - /* case error_ignore: break; */ - } - } else { - *(destcur++) = decbuf[0]; - *(destcur++) = decbuf[1]; - } - } - - r = codec_tuple(PyString_FromStringAndSize((char*)destptr, destcur - destptr), arglen); - PyMem_Del(destptr); - return r; -} - -static char cp949_decode__doc__[] = "CP949 decoder"; - -static PyObject * -cp949_decode(PyObject *self, PyObject *args) -{ - unsigned char *argstr, *srccur, *srcend; - int arglen, errtype = error_strict; - char *errors = NULL; - Py_UNICODE *destptr, *destcur, *codemap, code; - PyObject *r; - - if (!PyArg_ParseTuple(args, "s#|z:cp949_decode", &argstr, &arglen, &errors)) - return NULL; - - errtype = error_type(errors); - if (errtype == error_undef) - return NULL; - - destcur = destptr = PyMem_New(Py_UNICODE, arglen+1); - for (srccur = argstr, srcend = argstr + arglen; srccur < srcend; srccur++) { - if ((*srccur & 0x80) && (srccur+1 < srcend)) { - if (uhc_decode_hint[*srccur]) { /* UHC page0 region */ - codemap = uhc_decode_map[*srccur & 0x7F]; - /* codemap DOES have all maps on 0x81-0xA0, alphabet area can't on this */ - if (uhc_page0_bottom <= srccur[1] && srccur[1] <= uhc_page0_top) { - code = codemap[srccur[1] - uhc_page0_bottom]; - if (code == UNIFIL) - goto invalid; - *(destcur++) = code; - srccur++; /* skip 2byte */ - } else - goto invalid; - } else if (uhc_decode_hint[srccur[1]]) { /* UHC page1 region */ - codemap = uhc_decode_map[*srccur & 0x7F]; - if (!codemap) - goto invalid; - /* srccur[1] has tested already */ - code = codemap[srccur[1] - uhc_page1_bottom]; - if (code == UNIFIL) - goto invalid; - *(destcur++) = code; - srccur++; /* skip 2byte */ - } else { - /* ksc5601 area */ - codemap = ksc5601_decode_map[*srccur & 0x7F]; - if (!codemap) - goto invalid; - if (ksc5601_decode_bottom <= srccur[1] && srccur[1] <= ksc5601_decode_top) { - code = codemap[srccur[1] - ksc5601_decode_bottom]; - if (code == UNIFIL) - goto invalid; - *(destcur++) = code; - srccur++; - continue; - } else { -invalid: srccur++; /* skip 2byte */ - switch (errtype) { - case error_strict: - PyMem_Del(destptr); - PyErr_Format(PyExc_UnicodeError, - "CP949 decoding error: invalid character \\x%02x%02x", - srccur[0], srccur[1]); - return NULL; - break; - case error_replace: - *(destcur++) = UNIFIL; - break; - /* case error_ignore: break; */ - } - continue; - } - } - } else - *(destcur++) = *srccur; - } - - r = codec_tuple(PyUnicode_FromUnicode(destptr, destcur-destptr), arglen); - PyMem_Del(destptr); - return r; -} - -static char cp949_encode__doc__[] = "CP949 encoder"; - -static PyObject * -cp949_encode(PyObject *self, PyObject *args) -{ - Py_UNICODE *argptr, *srccur, *srcend; - int arglen, errtype = error_strict; - char *errors = NULL; - unsigned char *destptr, *destcur, *decbuf; - PyObject *r; - - if (!PyArg_ParseTuple(args, "u#|z:cp949_encode", &argptr, &arglen, &errors)) - return NULL; - - errtype = error_type(errors); - if (errtype == error_undef) - return NULL; - - destcur = destptr = PyMem_New(unsigned char, arglen*2+1); - for (srccur = argptr, srcend = argptr + arglen; srccur < srcend; srccur++) { - if (*srccur <= 0x7F) - *(destcur++) = (unsigned char)*srccur; - else { - decbuf = _ksc5601_encode(*srccur); - if (!decbuf) - decbuf = _uhc_encode(*srccur); - if(decbuf == 0) { - switch (errtype) { - case error_strict: - PyMem_Del(destptr); - PyErr_Format(PyExc_UnicodeError, - "CP949 encoding error: invalid character \\u%04x", - *srccur); - return NULL; - break; - case error_replace: - *(destcur++) = 0xa1; - *(destcur++) = 0xa1; - break; - /* case error_ignore: break; */ - } - } else { - *(destcur++) = decbuf[0]; - *(destcur++) = decbuf[1]; - } - } - } - - r = codec_tuple(PyString_FromStringAndSize((char*)destptr, destcur - destptr), arglen); - PyMem_Del(destptr); - return r; -} /* List of methods defined in the module */ 1.1 KoreanCodecs/src/cp949_codec.c Index: cp949_codec.c =================================================================== /* * cp949_codec.c * * KoreanCodecs CP949 Codec C Implementation * * Author : Hye-Shik Chang <pe...@fa...> * Date : $Date: 2002/04/26 21:06:10 $ * Created : 15 March 2002 * * $Revision: 1.1 $ */ #ifdef KOCOCODEC_INCLUDE static char cp949_decode__doc__[] = "CP949 decoder"; static PyObject * cp949_decode(PyObject *self, PyObject *args) { unsigned char *argstr, *srccur, *srcend; int arglen, errtype = error_strict; char *errors = NULL; Py_UNICODE *destptr, *destcur, *codemap, code; PyObject *r; if (!PyArg_ParseTuple(args, "s#|z:cp949_decode", &argstr, &arglen, &errors)) return NULL; errtype = error_type(errors); if (errtype == error_undef) return NULL; destcur = destptr = PyMem_New(Py_UNICODE, arglen+1); for (srccur = argstr, srcend = argstr + arglen; srccur < srcend; srccur++) { if ((*srccur & 0x80) && (srccur+1 < srcend)) { if (uhc_decode_hint[*srccur]) { /* UHC page0 region */ codemap = uhc_decode_map[*srccur & 0x7F]; /* codemap DOES have all maps on 0x81-0xA0, alphabet area can't on this */ if (uhc_page0_bottom <= srccur[1] && srccur[1] <= uhc_page0_top) { code = codemap[srccur[1] - uhc_page0_bottom]; if (code == UNIFIL) goto invalid; *(destcur++) = code; srccur++; /* skip 2byte */ } else goto invalid; } else if (uhc_decode_hint[srccur[1]]) { /* UHC page1 region */ codemap = uhc_decode_map[*srccur & 0x7F]; if (!codemap) goto invalid; /* srccur[1] has tested already */ code = codemap[srccur[1] - uhc_page1_bottom]; if (code == UNIFIL) goto invalid; *(destcur++) = code; srccur++; /* skip 2byte */ } else { /* ksc5601 area */ codemap = ksc5601_decode_map[*srccur & 0x7F]; if (!codemap) goto invalid; if (ksc5601_decode_bottom <= srccur[1] && srccur[1] <= ksc5601_decode_top) { code = codemap[srccur[1] - ksc5601_decode_bottom]; if (code == UNIFIL) goto invalid; *(destcur++) = code; srccur++; continue; } else { invalid: srccur++; /* skip 2byte */ switch (errtype) { case error_strict: PyMem_Del(destptr); PyErr_Format(PyExc_UnicodeError, "CP949 decoding error: invalid character \\x%02x%02x", srccur[0], srccur[1]); return NULL; break; case error_replace: *(destcur++) = UNIFIL; break; /* case error_ignore: break; */ } continue; } } } else *(destcur++) = *srccur; } r = codec_tuple(PyUnicode_FromUnicode(destptr, destcur-destptr), arglen); PyMem_Del(destptr); return r; } static char cp949_encode__doc__[] = "CP949 encoder"; static PyObject * cp949_encode(PyObject *self, PyObject *args) { Py_UNICODE *argptr, *srccur, *srcend; int arglen, errtype = error_strict; char *errors = NULL; unsigned char *destptr, *destcur, *decbuf; PyObject *r; if (!PyArg_ParseTuple(args, "u#|z:cp949_encode", &argptr, &arglen, &errors)) return NULL; errtype = error_type(errors); if (errtype == error_undef) return NULL; destcur = destptr = PyMem_New(unsigned char, arglen*2+1); for (srccur = argptr, srcend = argptr + arglen; srccur < srcend; srccur++) { if (*srccur <= 0x7F) *(destcur++) = (unsigned char)*srccur; else { decbuf = _ksc5601_encode(*srccur); if (!decbuf) decbuf = _uhc_encode(*srccur); if(decbuf == 0) { switch (errtype) { case error_strict: PyMem_Del(destptr); PyErr_Format(PyExc_UnicodeError, "CP949 encoding error: invalid character \\u%04x", *srccur); return NULL; break; case error_replace: *(destcur++) = 0xa1; *(destcur++) = 0xa1; break; /* case error_ignore: break; */ } } else { *(destcur++) = decbuf[0]; *(destcur++) = decbuf[1]; } } } r = codec_tuple(PyString_FromStringAndSize((char*)destptr, destcur - destptr), arglen); PyMem_Del(destptr); return r; } #endif 1.1 KoreanCodecs/src/euckr_codec.c Index: euckr_codec.c =================================================================== /* * euckr_codec.c * * KoreanCodecs EUC-KR Codec C Implementation * * Author : Hye-Shik Chang <pe...@fa...> * Date : $Date: 2002/04/26 21:06:10 $ * Created : 15 March 2002 * * $Revision: 1.1 $ */ #ifdef KOCOCODEC_INCLUDE static char euc_kr_decode__doc__[] = "EUC-KR decoder"; static PyObject * euc_kr_decode(PyObject *self, PyObject *args) { unsigned char *argstr, *srccur, *srcend; int arglen, errtype = error_strict; char *errors = NULL; Py_UNICODE *destptr, *destcur, *codemap, code; PyObject *r; if (!PyArg_ParseTuple(args, "s#|z:euc_kr_decode", &argstr, &arglen, &errors)) return NULL; errtype = error_type(errors); if (errtype == error_undef) return NULL; destcur = destptr = PyMem_New(Py_UNICODE, arglen+1); for (srccur = argstr, srcend = argstr + arglen; srccur < srcend; srccur++) { if ((*srccur & 0x80) && (srccur+1 < srcend)) { codemap = ksc5601_decode_map[*srccur & 0x7F]; if (!codemap) goto invalid; if (ksc5601_decode_bottom <= srccur[1] && srccur[1] <= ksc5601_decode_top) { code = codemap[srccur[1] - ksc5601_decode_bottom]; if (code == UNIFIL) goto invalid; *(destcur++) = code; srccur++; continue; } else { invalid: srccur++; /* skip 2byte */ switch (errtype) { case error_strict: PyMem_Del(destptr); PyErr_Format(PyExc_UnicodeError, "EUC-KR decoding error: invalid character \\x%02x%02x", srccur[0], srccur[1]); return NULL; break; case error_replace: *(destcur++) = UNIFIL; break; /* case error_ignore: break; */ } continue; } } else *(destcur++) = *srccur; } r = codec_tuple(PyUnicode_FromUnicode(destptr, destcur-destptr), arglen); PyMem_Del(destptr); return r; } static char euc_kr_encode__doc__[] = "EUC-KR encoder"; static PyObject * euc_kr_encode(PyObject *self, PyObject *args) { Py_UNICODE *argptr, *srccur, *srcend; int arglen, errtype = error_strict; char *errors = NULL; unsigned char *destptr, *destcur, *decbuf; PyObject *r; if (!PyArg_ParseTuple(args, "u#|z:euc_kr_encode", &argptr, &arglen, &errors)) return NULL; errtype = error_type(errors); if (errtype == error_undef) return NULL; destcur = destptr = PyMem_New(unsigned char, arglen*2+1); for (srccur = argptr, srcend = argptr + arglen; srccur < srcend; srccur++) { if (*srccur <= 0x7F) *(destcur++) = (unsigned char)*srccur; else if((decbuf = _ksc5601_encode(*srccur)) == 0) { switch (errtype) { case error_strict: PyMem_Del(destptr); PyErr_Format(PyExc_UnicodeError, "EUC-KR encoding error: invalid character \\u%04x", *srccur); return NULL; break; case error_replace: *(destcur++) = 0xa1; *(destcur++) = 0xa1; break; /* case error_ignore: break; */ } } else { *(destcur++) = decbuf[0]; *(destcur++) = decbuf[1]; } } r = codec_tuple(PyString_FromStringAndSize((char*)destptr, destcur - destptr), arglen); PyMem_Del(destptr); return r; } #endif |
From: Chang <pe...@us...> - 2002-04-26 12:28:53
|
perky 02/04/26 05:28:50 Modified: . ChangeLog Log: - Update cvslogs up to 2.0.3a2 Revision Changes Path 1.6 +83 -1 KoreanCodecs/ChangeLog Index: ChangeLog =================================================================== RCS file: /cvsroot/koco/KoreanCodecs/ChangeLog,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- ChangeLog 25 Apr 2002 22:35:17 -0000 1.5 +++ ChangeLog 26 Apr 2002 12:28:50 -0000 1.6 @@ -1,9 +1,91 @@ +----------------------------------------------------------------------------- +Version 2.0.3a2 (2002-04-26) Tag: RELENG_2_0_3_ALPHA2 + +2002-04-26 21:26 Hye-Shik Chang <pe...@fa...> + + * README.en (1.13), README.ko (1.12): + + - Add 2.0.3a2 description + +2002-04-26 21:22 Hye-Shik Chang <pe...@fa...> + + * doc/quick_start.txt (1.1), MANIFEST.in (1.8): + + - Add Quick Start document + +2002-04-26 20:39 Hye-Shik Chang <pe...@fa...> + + * setup.py (1.16), korean/aliases.py (1.4): + + - Add korean into sys.path if python version is lower than 2.1 + - Delete useless comment :) + +2002-04-26 19:33 Hye-Shik Chang <pe...@fa...> + + * setup.py (1.15), korean/aliases.py (1.3): + + - Avoid strange phenomenon around installing *.pth + into PLATLIB on win32 (why?) + - take away aliases with '-' (it's working now!) + +2002-04-26 19:18 Hye-Shik Chang <pe...@fa...> + + * MANIFEST.in (1.7), Makefile (1.3), setup.py (1.14): + + - Remove misc/ sub directory which contains Makefile for FreeBSD + and pth file + - Add .pth generating facility to setup.py + - Add dosdist target to maintainer Makefile + +2002-04-26 18:28 Hye-Shik Chang <pe...@fa...> + + * korean/aliases.py (1.2): + + - Add aliases with '-' for some strange win32 environments + +2002-04-26 17:21 Hye-Shik Chang <pe...@fa...> + + * src/: _koco.c (1.13), hangul.c (1.7): + + - Reduce syntax warnings on Visual C++ + +2002-04-26 17:03 Hye-Shik Chang <pe...@fa...> + + * src/hangul.c (1.6): + + - Make glibc+gcc happy on linux platform (suppressing warnings ~) + - Fix fatal memory deallocation bug on hangul_format + + Submitted by: Anonymous of www.python.or.kr + +2002-04-26 16:46 Hye-Shik Chang <pe...@fa...> + + * korean/python/hangul.py (1.8): + + - minor style fix : expand tab to 4 spaces + +2002-04-26 16:29 Hye-Shik Chang <pe...@fa...> + + * korean/python/hangul.py (1.7), korean/python/qwerty2bul.py (1.5), + test/CodecTestBase.py (1.5): + + - Emulate Nested scope and iter() for old versions under 2.2 + - Import korean.aliases before unit test + + Tested on: Python 2.0.1, 2.1.3 + +2002-04-26 07:35 Hye-Shik Chang <pe...@fa...> + + * ChangeLog (1.5): + + - Add tag descriptions + 2002-04-26 06:31 Hye-Shik Chang <pe...@fa...> * ChangeLog (1.4): - Add version milestone - + ----------------------------------------------------------------------------- Version 2.0.3a1 (2002-04-26) Tag: RELENG_2_0_3_ALPHA1 |
From: Chang <pe...@us...> - 2002-04-26 12:26:25
|
perky 02/04/26 05:26:24 Modified: . README.en README.ko Log: - Add 2.0.3a2 description Revision Changes Path 1.13 +3 -2 KoreanCodecs/README.en Index: README.en =================================================================== RCS file: /cvsroot/koco/KoreanCodecs/README.en,v retrieving revision 1.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 --- README.en 25 Apr 2002 21:28:07 -0000 1.12 +++ README.en 26 Apr 2002 12:26:24 -0000 1.13 @@ -1,8 +1,8 @@ -KoreanCodecs version 2.0.3a1 +KoreanCodecs version 2.0.3a2 ============================ Copyright(C) Hye-Shik Chang, 2002. -$Id: README.en,v 1.12 2002/04/25 21:28:07 perky Exp $ +$Id: README.en,v 1.13 2002/04/26 12:26:24 perky Exp $ @@ -126,6 +126,7 @@ - added conjoin, disjoint, format in hangul module (format function is a unicode formatter that fixes korean suffixes after each arguments) + - improvemented in platform and version compatibilities o Version 2.0.2 - 16 March 2002 - added euc-kr and cp949 codec C implementations 1.12 +3 -2 KoreanCodecs/README.ko Index: README.ko =================================================================== RCS file: /cvsroot/koco/KoreanCodecs/README.ko,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- README.ko 25 Apr 2002 21:28:07 -0000 1.11 +++ README.ko 26 Apr 2002 12:26:24 -0000 1.12 @@ -1,8 +1,8 @@ -ÇѱÛÄÚµ¦ ¹öÁ¯ 2.0.3a1 +ÇѱÛÄÚµ¦ ¹öÁ¯ 2.0.3a2 ===================== Copyright(C) Hye-Shik Chang, 2002. -$Id: README.ko,v 1.11 2002/04/25 21:28:07 perky Exp $ +$Id: README.ko,v 1.12 2002/04/26 12:26:24 perky Exp $ *Ä·ÆäÀÎ* ÀÎÅͳݿ¡¼ ÇÑ±Û ¸ÂÃã¹ýÀ» Áöŵ½Ã´Ù. ^-^/~ @@ -129,6 +129,7 @@ - hangul ¸ðµâ¿¡ conjoin, disjoint, format ÇÔ¼ö Ãß°¡ (formatÀº Æ÷¸ËµÈ ´Ü¾îÀÇ Á¾¼º¿©ºÎ¿¡ µû¶ó µÚÀÇ Á¶»ç¸¦ ¼öÁ¤ÇØÁÖ´Â ÇѱۿëÀÇ À¯´ÏÄÚµå Æ÷¸ÅÆÃ ÇÔ¼öÀÔ´Ï´Ù.) + - Ç÷§Æû°ú ¹öÁ¯º° ȣȯ¼ºÀÌ °³¼±µÇ¾ú½À´Ï´Ù. o ¹öÁ¯ 2.0.2 2002³â 3¿ù 16ÀÏ - EUC-KR, CP949 ÄÚµ¦ C ±¸Çö Ãß°¡ |
From: Chang <pe...@us...> - 2002-04-26 12:23:01
|
perky 02/04/26 05:23:01 Modified: . MANIFEST.in Log: - Add Quick Start document Revision Changes Path 1.8 +2 -1 KoreanCodecs/MANIFEST.in Index: MANIFEST.in =================================================================== RCS file: /cvsroot/koco/KoreanCodecs/MANIFEST.in,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- MANIFEST.in 26 Apr 2002 10:18:31 -0000 1.7 +++ MANIFEST.in 26 Apr 2002 12:23:01 -0000 1.8 @@ -1,4 +1,4 @@ -# $Id: MANIFEST.in,v 1.7 2002/04/26 10:18:31 perky Exp $ +# $Id: MANIFEST.in,v 1.8 2002/04/26 12:23:01 perky Exp $ # Hye-Shik Chang <19 Feb 2002> include README README.en README.ko @@ -6,6 +6,7 @@ #recursive-include debian * recursive-include test * +recursive-include doc * recursive-include src *.h global-exclude */CVS/* *.pyc *.pyo |
From: Chang <pe...@us...> - 2002-04-26 12:22:19
|
perky 02/04/26 05:22:17 Added: doc quick_start.txt Log: - Add Quick Start document Revision Changes Path 1.1 KoreanCodecs/doc/quick_start.txt Index: quick_start.txt =================================================================== Quick Start Guide for KoreanCodecs ---------------------------------- $Id: quick_start.txt,v 1.1 2002/04/26 12:22:17 perky Exp $ (this document have EUC-KR characters) 1. Installation * Normal $ python setup.py install * Without aliases (without extra path on python2.0) $ python setup.py install --without-aliases 2. Encoding/Decoding * EUC-KR Codec (the most widely-used Korean encoding) >>> unicode("ÇѱÛÀÌ ÁÁ¾Æ.", "euc-kr") u'\ud55c\uae00\uc774 \uc88b\uc544.' >>> print _.encode("euc-kr") ÇѱÛÀÌ ÁÁ¾Æ. * CP949 Codec (yet another widely-used encoding among M$ windows users) >>> unicode("Àå»ç´Â µ·À» ¹ö´Â °ÍÀÌ ¾Æ´Ï¶ó »ç¶÷À» ¹ö´Â °ÍÀ̶ó ÇÏ¿´½À´Ï´Ù ¡Ù ßÂÔ³ ¡Ù", "cp949") u'\uc7a5\uc0ac\ub294 \ub3c8\uc744 ...' >>> print _[-10:].encode("cp949") ½À´Ï´Ù ¡Ù ßÂÔ³ ¡Ù * Johab, Unijohab and ISO-2022-KR Codecs (same way with above described) * Qwerty2bul Codec >>> unicode("¿ø¼þÀÌ ¾ûµ¢ÀÌ´Â »¡°³", "euc-kr") u'\uc6d0\uc22d\uc774 \uc5c9\ub369\uc774\ub294 \ube68\uac1c' >>> _.encode("qwerty2bul") 'dnjstnddl djdejddlsms Qkfro' >>> unicode("Qkfrks rjtdms tkrhk tkrhksms aktdlTdj", "qwerty2bul") u'\ube68\uac04 \uac83\uc740 \uc0ac\uacfc \uc0ac\uacfc\ub294 \ub9db\uc788\uc5b4' >>> print _.encode("euc-kr") »¡°£ °ÍÀº »ç°ú »ç°ú´Â ¸ÀÀÖ¾î * Hangul Module >>> from korean import hangul >>> dir(hangul) ['A', 'AE', 'B', 'BB', 'BS', 'C', 'CHOSUNG_FILLER', ... ] >>> print hangul.DD.encode("euc-kr"), hangul.GS.encode("euc-kr") ¤¨ ¤£ >>> print u', '.join(hangul.Chosung).encode('euc-kr') ¤¡, ¤¢, ¤¤, ¤§, ¤¨, ¤©, ¤±, ¤², ¤³, ¤µ, ¤¶, ¤·, ¤¸, ¤¹, ¤º, ¤», ¤¼, ¤½, ¤¾ >>> hangul.ishangul(u'A') False >>> hangul.ishangul(unicode("ÇÑ", "euc-kr")) True >>> hangul.isJaeum(unicode("Ƽ", "euc-kr")) False >>> hangul.isJaeum(unicode("¤¼", "euc-kr")) True >>> u = lambda x: unicode(x, "euc-kr") >>> print u', '.join(hangul.split(u("Ħ"))).encode("euc-kr") ¤º, ¤Ó, ¤ª >>> print hangul.join([hangul.J, hangul.WA, hangul.L]).encode("euc-kr") ÁÄ >>> print hangul.join([hangul.K, hangul.WAE, hangul.Null]).encode("euc-kr") Äè >>> u("²¿ºÎ¶û ÇҸӴϰ¡ ²¿ºÎ¶û °í°³±æÀ»") u'\uaf2c\ubd80\ub791 ... >>> hangul.disjoint(_) u'\u1101\u1169\u1107\u116e ... >>> hangul.conjoin(_) u'\uaf2c\ubd80\ub791 ... >>> fmt = u("¿ì¸® ¿¹»Û %s(ÀÌ), %sÀÌ ÁÁ¾Æ %sÀÌ ÁÁ¾Æ?") >>> print hangul.format(fmt, u("¾Æ¶ó"), u("¾Æºü"), u("¾ö¸¶")).encode("euc-kr") ¿ì¸® ¿¹»Û ¾Æ¶ó, ¾Æºü°¡ ÁÁ¾Æ ¾ö¸¶°¡ ÁÁ¾Æ? >>> print hangul.format(fmt, u("ÀºÁ¤"), u("¼ú"), u("¹°")).encode("euc-kr") ¿ì¸® ¿¹»Û ÀºÁ¤ÀÌ, ¼úÀÌ ÁÁ¾Æ ¹°ÀÌ ÁÁ¾Æ? >>> fmt = u("%(subj1)s¿Í %(subj2)sÀ» ÇÕÄ¡¸é %(result)s°¡ »ý¼ºµÈ´Ù.") >>> print hangul.format(fmt, result=u("·¯½ºÆ¼³×ÀÏ"), subj1=u("À§½ºÅ°"), subj2=u("µå¶÷ºß")).encode("euc-kr") À§½ºÅ°¿Í µå¶÷ºß¸¦ ÇÕÄ¡¸é ·¯½ºÆ¼³×ÀÏÀÌ »ý¼ºµÈ´Ù. >>> print hangul.format(fmt, subj2=u("¸ÞÄ´õÅõ"), subj1=u("¸ÞÄ´õ¿ø"), result=u("66% ¸ÞÄ´õºêÀÌ")).encode("euc-kr") ¸ÞÄ´õ¿ø°ú ¸ÞÄ´õÅõ¸¦ ÇÕÄ¡¸é 66% ¸ÞÄ´õºêÀ̰¡ »ý¼ºµÈ´Ù. Yes, you got it! |
From: Chang <pe...@us...> - 2002-04-26 11:43:59
|
perky 02/04/26 04:43:56 KoreanCodecs/doc - New directory |
From: Chang <pe...@us...> - 2002-04-26 11:39:38
|
perky 02/04/26 04:39:35 Modified: . setup.py Log: - Add korean into sys.path if python version is lower than 2.1 - Delete useless comment :) Revision Changes Path 1.16 +5 -2 KoreanCodecs/setup.py Index: setup.py =================================================================== RCS file: /cvsroot/koco/KoreanCodecs/setup.py,v retrieving revision 1.15 retrieving revision 1.16 diff -u -r1.15 -r1.16 --- setup.py 26 Apr 2002 10:33:18 -0000 1.15 +++ setup.py 26 Apr 2002 11:39:35 -0000 1.16 @@ -1,5 +1,5 @@ #!/usr/bin/env python -# $Id: setup.py,v 1.15 2002/04/26 10:33:18 perky Exp $ +# $Id: setup.py,v 1.16 2002/04/26 11:39:35 perky Exp $ import sys from distutils.core import setup, Extension @@ -14,7 +14,10 @@ def initialize_options (self): install.initialize_options(self) if with_aliases: - self.extra_path = ("korean", "import korean.aliases") + if sys.hexversion >= '0x2010000': + self.extra_path = ("korean", "import korean.aliases") + else: + self.extra_path = "korean" def finalize_options (self): org_install_lib = self.install_lib install.finalize_options(self) |
From: Chang <pe...@us...> - 2002-04-26 11:39:38
|
perky 02/04/26 04:39:36 Modified: korean aliases.py Log: - Add korean into sys.path if python version is lower than 2.1 - Delete useless comment :) Revision Changes Path 1.4 +1 -2 KoreanCodecs/korean/aliases.py Index: aliases.py =================================================================== RCS file: /cvsroot/koco/KoreanCodecs/korean/aliases.py,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- aliases.py 26 Apr 2002 10:33:18 -0000 1.3 +++ aliases.py 26 Apr 2002 11:39:35 -0000 1.4 @@ -1,10 +1,9 @@ # Hye-Shik Chang <17 Apr 2002> -# $Id: aliases.py,v 1.3 2002/04/26 10:33:18 perky Exp $ +# $Id: aliases.py,v 1.4 2002/04/26 11:39:35 perky Exp $ import encodings.aliases encodings.aliases.aliases.update({ -# some environment of win32 doesn't resolve '-' by '_' 'cp949': 'korean.cp949', 'ms949': 'korean.cp949', 'uhc': 'korean.cp949', |
From: Chang <pe...@us...> - 2002-04-26 10:33:20
|
perky 02/04/26 03:33:19 Modified: korean aliases.py Log: - Avoid strange phenomenon around installing *.pth into PLATLIB on win32 (why?) - take away aliases with '-' (it's working now!) Revision Changes Path 1.3 +1 -7 KoreanCodecs/korean/aliases.py Index: aliases.py =================================================================== RCS file: /cvsroot/koco/KoreanCodecs/korean/aliases.py,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- aliases.py 26 Apr 2002 09:28:59 -0000 1.2 +++ aliases.py 26 Apr 2002 10:33:18 -0000 1.3 @@ -1,5 +1,5 @@ # Hye-Shik Chang <17 Apr 2002> -# $Id: aliases.py,v 1.2 2002/04/26 09:28:59 perky Exp $ +# $Id: aliases.py,v 1.3 2002/04/26 10:33:18 perky Exp $ import encodings.aliases @@ -8,21 +8,15 @@ 'cp949': 'korean.cp949', 'ms949': 'korean.cp949', 'uhc': 'korean.cp949', - 'euc-kr': 'korean.euc_kr', 'euc_kr': 'korean.euc_kr', 'euckr': 'korean.euc_kr', 'ksc5601': 'korean.euc_kr', - 'ksc5601-1987': 'korean.euc_kr', 'ksc5601_1987': 'korean.euc_kr', - 'ksc_5601-1987':'korean.euc_kr', 'ksc_5601_1987':'korean.euc_kr', - 'ks_c_5601-1987':'korean.euc_kr', 'ks_c_5601_1987':'korean.euc_kr', 'ksx1001': 'korean.euc_kr', - 'iso-2022-kr': 'korean.iso_2022_kr', 'iso_2022_kr': 'korean.iso_2022_kr', 'iso2022kr': 'korean.iso_2022_kr', - 'iso2022-kr': 'korean.iso_2022_kr', 'iso2022_kr': 'korean.iso_2022_kr', 'johab': 'korean.johab', 'qwerty2bul': 'korean.qwerty2bul', |
From: Chang <pe...@us...> - 2002-04-26 10:33:20
|
perky 02/04/26 03:33:18 Modified: . setup.py Log: - Avoid strange phenomenon around installing *.pth into PLATLIB on win32 (why?) - take away aliases with '-' (it's working now!) Revision Changes Path 1.15 +2 -2 KoreanCodecs/setup.py Index: setup.py =================================================================== RCS file: /cvsroot/koco/KoreanCodecs/setup.py,v retrieving revision 1.14 retrieving revision 1.15 diff -u -r1.14 -r1.15 --- setup.py 26 Apr 2002 10:18:31 -0000 1.14 +++ setup.py 26 Apr 2002 10:33:18 -0000 1.15 @@ -1,5 +1,5 @@ #!/usr/bin/env python -# $Id: setup.py,v 1.14 2002/04/26 10:18:31 perky Exp $ +# $Id: setup.py,v 1.15 2002/04/26 10:33:18 perky Exp $ import sys from distutils.core import setup, Extension @@ -18,7 +18,7 @@ def finalize_options (self): org_install_lib = self.install_lib install.finalize_options(self) - self.install_lib = org_install_lib or self.install_purelib + self.install_libbase = self.install_lib = org_install_lib or self.install_purelib setup (name = "KoreanCodecs", version = "2.0.3a2", |
From: Chang <pe...@us...> - 2002-04-26 10:18:33
|
perky 02/04/26 03:18:32 Removed: misc Makefile.FreeBSD korean.pth Log: - Remove misc/ sub directory which contains Makefile for FreeBSD and pth file - Add .pth generating facility to setup.py - Add dosdist target to maintainer Makefile |
From: Chang <pe...@us...> - 2002-04-26 10:18:33
|
perky 02/04/26 03:18:32 Modified: . MANIFEST.in Makefile setup.py Log: - Remove misc/ sub directory which contains Makefile for FreeBSD and pth file - Add .pth generating facility to setup.py - Add dosdist target to maintainer Makefile Revision Changes Path 1.7 +1 -2 KoreanCodecs/MANIFEST.in Index: MANIFEST.in =================================================================== RCS file: /cvsroot/koco/KoreanCodecs/MANIFEST.in,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- MANIFEST.in 25 Apr 2002 21:29:07 -0000 1.6 +++ MANIFEST.in 26 Apr 2002 10:18:31 -0000 1.7 @@ -1,11 +1,10 @@ -# $Id: MANIFEST.in,v 1.6 2002/04/25 21:29:07 perky Exp $ +# $Id: MANIFEST.in,v 1.7 2002/04/26 10:18:31 perky Exp $ # Hye-Shik Chang <19 Feb 2002> include README README.en README.ko include LICENSE MANIFEST.in ChangeLog #recursive-include debian * -recursive-include misc * recursive-include test * recursive-include src *.h 1.3 +23 -6 KoreanCodecs/Makefile Index: Makefile =================================================================== RCS file: /cvsroot/koco/KoreanCodecs/Makefile,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- Makefile 24 Apr 2002 07:46:38 -0000 1.2 +++ Makefile 26 Apr 2002 10:18:31 -0000 1.3 @@ -3,19 +3,36 @@ # # by Hye-Shik Chang <pe...@fa...> # -# $Id: Makefile,v 1.2 2002/04/24 07:46:38 perky Exp $ +# $Id: Makefile,v 1.3 2002/04/26 10:18:31 perky Exp $ # -CVS2CL= /usr/local/bin/cvs2cl -PYTHON= /usr/local/bin/python +LOCALBASE?= /usr/local +CVS2CL= ${LOCALBASE}/bin/cvs2cl +PYTHON= ${LOCALBASE}/bin/python +UNIX2DOS= ${LOCALBASE}/bin/unix2dos clean: - rm -rf build + rm -rf build DOS *.bak MANIFEST log: ${CVS2CL} -f ChangeLog --accum -r -b -S --no-wrap -U mk/unames -dist: ChangeLog - ${PYTHON} setup.py sdist +dosdist: + rm -rf DOS + DISTS=`echo *`; \ + mkdir -p DOS; \ + cp -Rp $${DISTS} DOS/ + rm -f DOS/MANIFEST + find DOS -type f | grep '\(\.py$$\)\|\(/[A-Z][A-Zh]\)' | \ + xargs -n1 ${UNIX2DOS} + cd DOS && ${PYTHON} setup.py sdist --formats="zip" + mkdir -p dist + mv DOS/dist/* dist/ + rm -rf DOS + +unixdist: + ${PYTHON} setup.py sdist --formats="gztar,bztar" + +sdist: ChangeLog unixdist dosdist # ex: noet ts=8 sts=8 1.14 +8 -6 KoreanCodecs/setup.py Index: setup.py =================================================================== RCS file: /cvsroot/koco/KoreanCodecs/setup.py,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- setup.py 25 Apr 2002 21:28:07 -0000 1.13 +++ setup.py 26 Apr 2002 10:18:31 -0000 1.14 @@ -1,5 +1,5 @@ #!/usr/bin/env python -# $Id: setup.py,v 1.13 2002/04/25 21:28:07 perky Exp $ +# $Id: setup.py,v 1.14 2002/04/26 10:18:31 perky Exp $ import sys from distutils.core import setup, Extension @@ -11,14 +11,17 @@ sys.argv.remove('--without-aliases') class Install(install): + def initialize_options (self): + install.initialize_options(self) + if with_aliases: + self.extra_path = ("korean", "import korean.aliases") def finalize_options (self): + org_install_lib = self.install_lib install.finalize_options(self) - if with_aliases: - self.distribution.data_files = [ - (self.install_purelib, ["misc/korean.pth"])] + self.install_lib = org_install_lib or self.install_purelib setup (name = "KoreanCodecs", - version = "2.0.3a1", + version = "2.0.3a2", description = "Korean Codecs for Python Unicode Support", long_description = "This package provides Unicode codecs that make " "Python aware of Korean character encodings such as EUC-KR, CP949 " @@ -29,7 +32,6 @@ license = "Python License", url = "http://sourceforge.net/projects/koco", cmdclass = {'install': Install}, - platforms = ['independent'], packages = ['korean', 'korean.mappings', 'korean.c', |
From: Chang <pe...@us...> - 2002-04-26 09:29:03
|
perky 02/04/26 02:28:59 Modified: korean aliases.py Log: - Add aliases with '-' for some strange win32 environments Revision Changes Path 1.2 +9 -1 KoreanCodecs/korean/aliases.py Index: aliases.py =================================================================== RCS file: /cvsroot/koco/KoreanCodecs/korean/aliases.py,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- aliases.py 17 Apr 2002 10:43:21 -0000 1.1 +++ aliases.py 26 Apr 2002 09:28:59 -0000 1.2 @@ -1,20 +1,28 @@ # Hye-Shik Chang <17 Apr 2002> -# $Id: aliases.py,v 1.1 2002/04/17 10:43:21 perky Exp $ +# $Id: aliases.py,v 1.2 2002/04/26 09:28:59 perky Exp $ import encodings.aliases encodings.aliases.aliases.update({ +# some environment of win32 doesn't resolve '-' by '_' 'cp949': 'korean.cp949', 'ms949': 'korean.cp949', 'uhc': 'korean.cp949', + 'euc-kr': 'korean.euc_kr', 'euc_kr': 'korean.euc_kr', 'euckr': 'korean.euc_kr', 'ksc5601': 'korean.euc_kr', + 'ksc5601-1987': 'korean.euc_kr', 'ksc5601_1987': 'korean.euc_kr', + 'ksc_5601-1987':'korean.euc_kr', 'ksc_5601_1987':'korean.euc_kr', + 'ks_c_5601-1987':'korean.euc_kr', + 'ks_c_5601_1987':'korean.euc_kr', 'ksx1001': 'korean.euc_kr', + 'iso-2022-kr': 'korean.iso_2022_kr', 'iso_2022_kr': 'korean.iso_2022_kr', 'iso2022kr': 'korean.iso_2022_kr', + 'iso2022-kr': 'korean.iso_2022_kr', 'iso2022_kr': 'korean.iso_2022_kr', 'johab': 'korean.johab', 'qwerty2bul': 'korean.qwerty2bul', |
From: Chang <pe...@us...> - 2002-04-26 08:21:56
|
perky 02/04/26 01:21:54 Modified: src _koco.c hangul.c Log: - Reduce syntax warnings on Visual C++ Revision Changes Path 1.13 +5 -5 KoreanCodecs/src/_koco.c Index: _koco.c =================================================================== RCS file: /cvsroot/koco/KoreanCodecs/src/_koco.c,v retrieving revision 1.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 --- _koco.c 18 Apr 2002 21:45:02 -0000 1.12 +++ _koco.c 26 Apr 2002 08:21:54 -0000 1.13 @@ -4,14 +4,14 @@ * KoreanCodecs C Implementations * * Author : Hye-Shik Chang <pe...@fa...> - * Date : $Date: 2002/04/18 21:45:02 $ + * Date : $Date: 2002/04/26 08:21:54 $ * Created : 15 March 2002 * - * $Revision: 1.12 $ + * $Revision: 1.13 $ */ static char *version = -"$Id: _koco.c,v 1.12 2002/04/18 21:45:02 perky Exp $"; +"$Id: _koco.c,v 1.13 2002/04/26 08:21:54 perky Exp $"; #define UNIFIL 0xfffd @@ -144,7 +144,7 @@ destcur = destptr = PyMem_New(unsigned char, arglen*2+1); for (srccur = argptr, srcend = argptr + arglen; srccur < srcend; srccur++) { if (*srccur <= 0x7F) - *(destcur++) = *srccur; + *(destcur++) = (unsigned char)*srccur; else if((decbuf = _ksc5601_encode(*srccur)) == 0) { switch (errtype) { @@ -274,7 +274,7 @@ destcur = destptr = PyMem_New(unsigned char, arglen*2+1); for (srccur = argptr, srcend = argptr + arglen; srccur < srcend; srccur++) { if (*srccur <= 0x7F) - *(destcur++) = *srccur; + *(destcur++) = (unsigned char)*srccur; else { decbuf = _ksc5601_encode(*srccur); if (!decbuf) 1.7 +10 -6 KoreanCodecs/src/hangul.c Index: hangul.c =================================================================== RCS file: /cvsroot/koco/KoreanCodecs/src/hangul.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- hangul.c 26 Apr 2002 08:03:18 -0000 1.6 +++ hangul.c 26 Apr 2002 08:21:54 -0000 1.7 @@ -4,14 +4,14 @@ * KoreanCodecs Hangul Module C Implementation * * Author : Hye-Shik Chang <pe...@fa...> - * Date : $Date: 2002/04/26 08:03:18 $ + * Date : $Date: 2002/04/26 08:21:54 $ * Created : 25 April 2002 * - * $Revision: 1.6 $ + * $Revision: 1.7 $ */ static char *version = -"$Id: hangul.c,v 1.6 2002/04/26 08:03:18 perky Exp $"; +"$Id: hangul.c,v 1.7 2002/04/26 08:21:54 perky Exp $"; #include "Python.h" @@ -86,7 +86,8 @@ /* END MARKER */ { 0, 0, NOMULTI, {0,} }, }; -#undef J_C, J_J, J_CJ, M_J, NOMULTI, CODE +#undef NOMULTI +#undef CODE static jamotype *jamo_chosung[NCHOSUNG], *jamo_jungsung[NJUNGSUNG], *jamo_jongsung[NJONGSUNG]; @@ -557,8 +558,11 @@ *(fcur++) = *fmt; } -#undef PROCESSSUFFIX, PROCESSSUFFIX_IDA -#undef HAS_FINAL, HAS_FINAL_OR_NOTSYL +/* these were written separatedly for win32 compilers */ +#undef PROCESSSUFFIX +#undef PROCESSSUFFIX_IDA +#undef HAS_FINAL +#undef HAS_FINAL_OR_NOTSYL Py_DECREF(r); r = PyUnicode_FromUnicode(fmtout, fcur-fmtout); |
From: Chang <pe...@us...> - 2002-04-26 08:08:03
|
perky 02/04/26 01:03:18 Modified: src hangul.c Log: - Make glibc+gcc happy on linux platform (suppressing warnings ~) - Fix fatal memory deallocation bug on hangul_format Submitted by: Anonymous of www.python.or.kr Revision Changes Path 1.6 +6 -6 KoreanCodecs/src/hangul.c Index: hangul.c =================================================================== RCS file: /cvsroot/koco/KoreanCodecs/src/hangul.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- hangul.c 25 Apr 2002 21:13:45 -0000 1.5 +++ hangul.c 26 Apr 2002 08:03:18 -0000 1.6 @@ -4,14 +4,14 @@ * KoreanCodecs Hangul Module C Implementation * * Author : Hye-Shik Chang <pe...@fa...> - * Date : $Date: 2002/04/25 21:13:45 $ + * Date : $Date: 2002/04/26 08:03:18 $ * Created : 25 April 2002 * - * $Revision: 1.5 $ + * $Revision: 1.6 $ */ static char *version = -"$Id: hangul.c,v 1.5 2002/04/25 21:13:45 perky Exp $"; +"$Id: hangul.c,v 1.6 2002/04/26 08:03:18 perky Exp $"; #include "Python.h" @@ -215,7 +215,7 @@ if (PyUnicode_GET_SIZE(argelems[i])) elems[i] = *uobj; else - elems[i] = NULL; + elems[i] = 0; } if ( (elems[0] && (!isJaeum(elems[0]) || !isChosung(elems[0]))) /* Chosung validity */ @@ -278,7 +278,7 @@ cho = jamo_chosung[hseq / (NJUNGSUNG*NJONGSUNG)]->code; jung = jamo_jungsung[(hseq / NJONGSUNG) % NJUNGSUNG]->code; - if ((t = hseq % NJONGSUNG) != NULL) { + if ((t = hseq % NJONGSUNG)) { jong = jamo_jongsung[t]->code; jongobj = PyUnicode_FromUnicode(&jong, 1); } else { @@ -504,7 +504,6 @@ fmt = PyUnicode_AS_UNICODE(r); fmtsize = PyUnicode_GET_SIZE(r); - Py_DECREF(r); #define HAS_FINAL() ( \ (past = *(fmt-1)), \ @@ -561,6 +560,7 @@ #undef PROCESSSUFFIX, PROCESSSUFFIX_IDA #undef HAS_FINAL, HAS_FINAL_OR_NOTSYL + Py_DECREF(r); r = PyUnicode_FromUnicode(fmtout, fcur-fmtout); out: |
From: Chang <pe...@us...> - 2002-04-26 07:47:00
|
perky 02/04/26 00:46:59 Modified: korean/python hangul.py Log: - minor style fix : expand tab to 4 spaces Revision Changes Path 1.8 +20 -20 KoreanCodecs/korean/python/hangul.py Index: hangul.py =================================================================== RCS file: /cvsroot/koco/KoreanCodecs/korean/python/hangul.py,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- hangul.py 26 Apr 2002 07:29:43 -0000 1.7 +++ hangul.py 26 Apr 2002 07:46:59 -0000 1.8 @@ -15,7 +15,7 @@ # Conjoining Jamo Behavior: # http://www.unicode.org/unicode/uni2book/ch03.pdf (section 3.11) # -# $Id: hangul.py,v 1.7 2002/04/26 07:29:43 perky Exp $ +# $Id: hangul.py,v 1.8 2002/04/26 07:46:59 perky Exp $ # class UnicodeHangulError(Exception): @@ -212,35 +212,35 @@ # Iterator Emulator for ancient versions before 2.1 try: - iter + iter except: - class iter: - def __init__(self, obj): - self.obj = obj - self.ptr = 0 - def next(self): - try: - return self.obj[self.ptr] - finally: - self.ptr += 1 + class iter: + def __init__(self, obj): + self.obj = obj + self.ptr = 0 + def next(self): + try: + return self.obj[self.ptr] + finally: + self.ptr += 1 # Nested scope lambda emulation for versions before 2.2 import sys if sys.hexversion < '0x2020000': - class plambda: - def __init__(self, obj): - self.obj = obj - def __call__(self): - return self.obj + class plambda: + def __init__(self, obj): + self.obj = obj + def __call__(self): + return self.obj else: - plambda = None + plambda = None del sys def format(fmtstr, *args, **kwargs): if kwargs: - argget = lambda:kwargs - if plambda: - argget = plambda(kwargs) + argget = lambda:kwargs + if plambda: + argget = plambda(kwargs) else: argget = iter(args).next |
From: Chang <pe...@us...> - 2002-04-26 07:29:45
|
perky 02/04/26 00:29:43 Modified: test CodecTestBase.py Log: - Emulate Nested scope and iter() for old versions under 2.2 - Import korean.aliases before unit test Tested on: Python 2.0.1, 2.1.3 Revision Changes Path 1.5 +1 -0 KoreanCodecs/test/CodecTestBase.py Index: CodecTestBase.py =================================================================== RCS file: /cvsroot/koco/KoreanCodecs/test/CodecTestBase.py,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- CodecTestBase.py 1 Mar 2002 09:52:56 -0000 1.4 +++ CodecTestBase.py 26 Apr 2002 07:29:43 -0000 1.5 @@ -3,6 +3,7 @@ import StringIO import sys, codecs import unittest +from korean import aliases def escape(s): |