1""" Python 'raw-unicode-escape' Codec
2
3
4Written by Marc-Andre Lemburg (mal@lemburg.com).
5
6(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
7
8"""
9import codecs
10
11### Codec APIs
12
13class Codec(codecs.Codec):
14
15    # Note: Binding these as C functions will result in the class not
16    # converting them to methods. This is intended.
17    encode = codecs.raw_unicode_escape_encode
18    decode = codecs.raw_unicode_escape_decode
19
20class IncrementalEncoder(codecs.IncrementalEncoder):
21    def encode(self, input, final=False):
22        return codecs.raw_unicode_escape_encode(input, self.errors)[0]
23
24class IncrementalDecoder(codecs.BufferedIncrementalDecoder):
25    def _buffer_decode(self, input, errors, final):
26        return codecs.raw_unicode_escape_decode(input, errors, final)
27
28class StreamWriter(Codec,codecs.StreamWriter):
29    pass
30
31class StreamReader(Codec,codecs.StreamReader):
32    def decode(self, input, errors='strict'):
33        return codecs.raw_unicode_escape_decode(input, errors, False)
34
35### encodings module API
36
37def getregentry():
38    return codecs.CodecInfo(
39        name='raw-unicode-escape',
40        encode=Codec.encode,
41        decode=Codec.decode,
42        incrementalencoder=IncrementalEncoder,
43        incrementaldecoder=IncrementalDecoder,
44        streamwriter=StreamWriter,
45        streamreader=StreamReader,
46    )
47