1ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh#
2ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh# gbk.py: Python Unicode Codec for GBK
3ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh#
4ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh# Written by Hye-Shik Chang <perky@FreeBSD.org>
5ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh#
6ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh
7ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehimport _codecs_cn, codecs
8ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehimport _multibytecodec as mbc
9ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh
10ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehcodec = _codecs_cn.getcodec('gbk')
11ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh
12ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehclass Codec(codecs.Codec):
13ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh    encode = codec.encode
14ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh    decode = codec.decode
15ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh
16ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehclass IncrementalEncoder(mbc.MultibyteIncrementalEncoder,
17ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh                         codecs.IncrementalEncoder):
18ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh    codec = codec
19ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh
20ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehclass IncrementalDecoder(mbc.MultibyteIncrementalDecoder,
21ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh                         codecs.IncrementalDecoder):
22ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh    codec = codec
23ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh
24ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehclass StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader):
25ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh    codec = codec
26ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh
27ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehclass StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
28ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh    codec = codec
29ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh
30ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehdef getregentry():
31ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh    return codecs.CodecInfo(
32ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh        name='gbk',
33ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh        encode=Codec().encode,
34ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh        decode=Codec().decode,
35ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh        incrementalencoder=IncrementalEncoder,
36ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh        incrementaldecoder=IncrementalDecoder,
37ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh        streamreader=StreamReader,
38ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh        streamwriter=StreamWriter,
39ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh    )
40