2
""" Python Character Mapping Codec for ROT13.
4
This codec de/encodes from str to str.
6
Written by Marc-Andre Lemburg (mal@lemburg.com).
13
class Codec(codecs.Codec):
14
def encode(self, input, errors='strict'):
15
return (input.translate(rot13_map), len(input))
17
def decode(self, input, errors='strict'):
18
return (input.translate(rot13_map), len(input))
20
class IncrementalEncoder(codecs.IncrementalEncoder):
21
def encode(self, input, final=False):
22
return input.translate(rot13_map)
24
class IncrementalDecoder(codecs.IncrementalDecoder):
25
def decode(self, input, final=False):
26
return input.translate(rot13_map)
28
class StreamWriter(Codec,codecs.StreamWriter):
31
class StreamReader(Codec,codecs.StreamReader):
34
### encodings module API
37
return codecs.CodecInfo(
39
encode=Codec().encode,
40
decode=Codec().decode,
41
incrementalencoder=IncrementalEncoder,
42
incrementaldecoder=IncrementalDecoder,
43
streamwriter=StreamWriter,
44
streamreader=StreamReader,
45
_is_text_encoding=False,
50
rot13_map = codecs.make_identity_dict(range(256))
108
def rot13(infile, outfile):
109
outfile.write(codecs.encode(infile.read(), 'rot-13'))
111
if __name__ == '__main__':
113
rot13(sys.stdin, sys.stdout)