68 lines · 1.9 KB · Python
RawDownload
import os, string codecs = {    'cn': ('gb2312', 'gbk', 'gb18030', 'hz'),    'tw': ('big5', 'cp950'),    'hk': ('big5hkscs',),    'jp': ('cp932', 'shift_jis', 'euc_jp', 'euc_jisx0213', 'shift_jisx0213',           'euc_jis_2004', 'shift_jis_2004'),    'kr': ('cp949', 'euc_kr', 'johab'),    'iso2022': ('iso2022_jp', 'iso2022_jp_1', 'iso2022_jp_2',                'iso2022_jp_2004', 'iso2022_jp_3', 'iso2022_jp_ext',                'iso2022_kr'),} TEMPLATE = string.Template("""\## $encoding.py: Python Unicode Codec for $ENCODING## Written by Hye-Shik Chang <perky@FreeBSD.org># import _codecs_$owner, codecsimport _multibytecodec as mbc codec = _codecs_$owner.getcodec('$encoding') class Codec(codecs.Codec):    encode = codec.encode    decode = codec.decode class IncrementalEncoder(mbc.MultibyteIncrementalEncoder,                         codecs.IncrementalEncoder):    codec = codec class IncrementalDecoder(mbc.MultibyteIncrementalDecoder,                         codecs.IncrementalDecoder):    codec = codec class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader):    codec = codec class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):    codec = codec def getregentry():    return codecs.CodecInfo(        name='$encoding',        encode=Codec().encode,        decode=Codec().decode,        incrementalencoder=IncrementalEncoder,        incrementaldecoder=IncrementalDecoder,        streamreader=StreamReader,        streamwriter=StreamWriter,    )""") def gencodecs(prefix):    for loc, encodings in codecs.iteritems():        for enc in encodings:            code = TEMPLATE.substitute(ENCODING=enc.upper(),                                       encoding=enc.lower(),                                       owner=loc)            codecpath = os.path.join(prefix, enc + '.py')            open(codecpath, 'w').write(code) if __name__ == '__main__':    import sys    gencodecs(sys.argv[1])