2 """ Python Character Mapping Codec for ROT13.
4 See http://ucsub.colorado.edu/~kominek/rot13/ for details.
6 Written by Marc-Andre Lemburg (mal@lemburg.com).
14 class Codec(codecs
.Codec
):
16 def encode(self
,input,errors
='strict'):
17 return codecs
.charmap_encode(input,errors
,encoding_map
)
19 def decode(self
,input,errors
='strict'):
20 return codecs
.charmap_decode(input,errors
,decoding_map
)
22 class IncrementalEncoder(codecs
.IncrementalEncoder
):
23 def encode(self
, input, final
=False):
24 return codecs
.charmap_encode(input,self
.errors
,encoding_map
)[0]
26 class IncrementalDecoder(codecs
.IncrementalDecoder
):
27 def decode(self
, input, final
=False):
28 return codecs
.charmap_decode(input,self
.errors
,decoding_map
)[0]
30 class StreamWriter(Codec
,codecs
.StreamWriter
):
33 class StreamReader(Codec
,codecs
.StreamReader
):
36 ### encodings module API
39 return codecs
.CodecInfo(
41 encode
=Codec().encode
,
42 decode
=Codec().decode
,
43 incrementalencoder
=IncrementalEncoder
,
44 incrementaldecoder
=IncrementalDecoder
,
45 streamwriter
=StreamWriter
,
46 streamreader
=StreamReader
,
51 decoding_map
= codecs
.make_identity_dict(range(256))
109 encoding_map
= codecs
.make_encoding_map(decoding_map
)
113 def rot13(infile
, outfile
):
114 outfile
.write(infile
.read().encode('rot-13'))
116 if __name__
== '__main__':
118 rot13(sys
.stdin
, sys
.stdout
)