1*cda5da8dSAndroid Build Coastguard Worker""" Generic Python Character Mapping Codec. 2*cda5da8dSAndroid Build Coastguard Worker 3*cda5da8dSAndroid Build Coastguard Worker Use this codec directly rather than through the automatic 4*cda5da8dSAndroid Build Coastguard Worker conversion mechanisms supplied by unicode() and .encode(). 5*cda5da8dSAndroid Build Coastguard Worker 6*cda5da8dSAndroid Build Coastguard Worker 7*cda5da8dSAndroid Build Coastguard WorkerWritten by Marc-Andre Lemburg ([email protected]). 8*cda5da8dSAndroid Build Coastguard Worker 9*cda5da8dSAndroid Build Coastguard Worker(c) Copyright CNRI, All Rights Reserved. NO WARRANTY. 10*cda5da8dSAndroid Build Coastguard Worker 11*cda5da8dSAndroid Build Coastguard Worker"""#" 12*cda5da8dSAndroid Build Coastguard Worker 13*cda5da8dSAndroid Build Coastguard Workerimport codecs 14*cda5da8dSAndroid Build Coastguard Worker 15*cda5da8dSAndroid Build Coastguard Worker### Codec APIs 16*cda5da8dSAndroid Build Coastguard Worker 17*cda5da8dSAndroid Build Coastguard Workerclass Codec(codecs.Codec): 18*cda5da8dSAndroid Build Coastguard Worker 19*cda5da8dSAndroid Build Coastguard Worker # Note: Binding these as C functions will result in the class not 20*cda5da8dSAndroid Build Coastguard Worker # converting them to methods. This is intended. 21*cda5da8dSAndroid Build Coastguard Worker encode = codecs.charmap_encode 22*cda5da8dSAndroid Build Coastguard Worker decode = codecs.charmap_decode 23*cda5da8dSAndroid Build Coastguard Worker 24*cda5da8dSAndroid Build Coastguard Workerclass IncrementalEncoder(codecs.IncrementalEncoder): 25*cda5da8dSAndroid Build Coastguard Worker def __init__(self, errors='strict', mapping=None): 26*cda5da8dSAndroid Build Coastguard Worker codecs.IncrementalEncoder.__init__(self, errors) 27*cda5da8dSAndroid Build Coastguard Worker self.mapping = mapping 28*cda5da8dSAndroid Build Coastguard Worker 29*cda5da8dSAndroid Build Coastguard Worker def encode(self, input, final=False): 30*cda5da8dSAndroid Build Coastguard Worker return codecs.charmap_encode(input, self.errors, self.mapping)[0] 31*cda5da8dSAndroid Build Coastguard Worker 32*cda5da8dSAndroid Build Coastguard Workerclass IncrementalDecoder(codecs.IncrementalDecoder): 33*cda5da8dSAndroid Build Coastguard Worker def __init__(self, errors='strict', mapping=None): 34*cda5da8dSAndroid Build Coastguard Worker codecs.IncrementalDecoder.__init__(self, errors) 35*cda5da8dSAndroid Build Coastguard Worker self.mapping = mapping 36*cda5da8dSAndroid Build Coastguard Worker 37*cda5da8dSAndroid Build Coastguard Worker def decode(self, input, final=False): 38*cda5da8dSAndroid Build Coastguard Worker return codecs.charmap_decode(input, self.errors, self.mapping)[0] 39*cda5da8dSAndroid Build Coastguard Worker 40*cda5da8dSAndroid Build Coastguard Workerclass StreamWriter(Codec,codecs.StreamWriter): 41*cda5da8dSAndroid Build Coastguard Worker 42*cda5da8dSAndroid Build Coastguard Worker def __init__(self,stream,errors='strict',mapping=None): 43*cda5da8dSAndroid Build Coastguard Worker codecs.StreamWriter.__init__(self,stream,errors) 44*cda5da8dSAndroid Build Coastguard Worker self.mapping = mapping 45*cda5da8dSAndroid Build Coastguard Worker 46*cda5da8dSAndroid Build Coastguard Worker def encode(self,input,errors='strict'): 47*cda5da8dSAndroid Build Coastguard Worker return Codec.encode(input,errors,self.mapping) 48*cda5da8dSAndroid Build Coastguard Worker 49*cda5da8dSAndroid Build Coastguard Workerclass StreamReader(Codec,codecs.StreamReader): 50*cda5da8dSAndroid Build Coastguard Worker 51*cda5da8dSAndroid Build Coastguard Worker def __init__(self,stream,errors='strict',mapping=None): 52*cda5da8dSAndroid Build Coastguard Worker codecs.StreamReader.__init__(self,stream,errors) 53*cda5da8dSAndroid Build Coastguard Worker self.mapping = mapping 54*cda5da8dSAndroid Build Coastguard Worker 55*cda5da8dSAndroid Build Coastguard Worker def decode(self,input,errors='strict'): 56*cda5da8dSAndroid Build Coastguard Worker return Codec.decode(input,errors,self.mapping) 57*cda5da8dSAndroid Build Coastguard Worker 58*cda5da8dSAndroid Build Coastguard Worker### encodings module API 59*cda5da8dSAndroid Build Coastguard Worker 60*cda5da8dSAndroid Build Coastguard Workerdef getregentry(): 61*cda5da8dSAndroid Build Coastguard Worker return codecs.CodecInfo( 62*cda5da8dSAndroid Build Coastguard Worker name='charmap', 63*cda5da8dSAndroid Build Coastguard Worker encode=Codec.encode, 64*cda5da8dSAndroid Build Coastguard Worker decode=Codec.decode, 65*cda5da8dSAndroid Build Coastguard Worker incrementalencoder=IncrementalEncoder, 66*cda5da8dSAndroid Build Coastguard Worker incrementaldecoder=IncrementalDecoder, 67*cda5da8dSAndroid Build Coastguard Worker streamwriter=StreamWriter, 68*cda5da8dSAndroid Build Coastguard Worker streamreader=StreamReader, 69*cda5da8dSAndroid Build Coastguard Worker ) 70