4 webencodings.x_user_defined
5 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
7 An implementation of the x-user-defined encoding.
9 :copyright: Copyright 2012 by Simon Sapin
10 :license: BSD, see LICENSE for details.
14 from __future__ import unicode_literals
21 class Codec(codecs.Codec):
23 def encode(self, input, errors='strict'):
24 return codecs.charmap_encode(input, errors, encoding_table)
26 def decode(self, input, errors='strict'):
27 return codecs.charmap_decode(input, errors, decoding_table)
30 class IncrementalEncoder(codecs.IncrementalEncoder):
31 def encode(self, input, final=False):
32 return codecs.charmap_encode(input, self.errors, encoding_table)[0]
35 class IncrementalDecoder(codecs.IncrementalDecoder):
36 def decode(self, input, final=False):
37 return codecs.charmap_decode(input, self.errors, decoding_table)[0]
40 class StreamWriter(Codec, codecs.StreamWriter):
44 class StreamReader(Codec, codecs.StreamReader):
48 ### encodings module API
50 codec_info = codecs.CodecInfo(
51 name='x-user-defined',
52 encode=Codec().encode,
53 decode=Codec().decode,
54 incrementalencoder=IncrementalEncoder,
55 incrementaldecoder=IncrementalDecoder,
56 streamreader=StreamReader,
57 streamwriter=StreamWriter,
64 # for c in range(256): print(' %r' % chr(c if c < 128 else c + 0xF700))
325 encoding_table = codecs.charmap_build(decoding_table)