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