symbian-qemu-0.9.1-12/python-win32-2.6.1/lib/encodings/rot_13.py
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     1 #!/usr/bin/env python
       
     2 """ Python Character Mapping Codec for ROT13.
       
     3 
       
     4     See http://ucsub.colorado.edu/~kominek/rot13/ for details.
       
     5 
       
     6     Written by Marc-Andre Lemburg (mal@lemburg.com).
       
     7 
       
     8 """#"
       
     9 
       
    10 import codecs
       
    11 
       
    12 ### Codec APIs
       
    13 
       
    14 class Codec(codecs.Codec):
       
    15 
       
    16     def encode(self,input,errors='strict'):
       
    17         return codecs.charmap_encode(input,errors,encoding_map)
       
    18 
       
    19     def decode(self,input,errors='strict'):
       
    20         return codecs.charmap_decode(input,errors,decoding_map)
       
    21 
       
    22 class IncrementalEncoder(codecs.IncrementalEncoder):
       
    23     def encode(self, input, final=False):
       
    24         return codecs.charmap_encode(input,self.errors,encoding_map)[0]
       
    25 
       
    26 class IncrementalDecoder(codecs.IncrementalDecoder):
       
    27     def decode(self, input, final=False):
       
    28         return codecs.charmap_decode(input,self.errors,decoding_map)[0]
       
    29 
       
    30 class StreamWriter(Codec,codecs.StreamWriter):
       
    31     pass
       
    32 
       
    33 class StreamReader(Codec,codecs.StreamReader):
       
    34     pass
       
    35 
       
    36 ### encodings module API
       
    37 
       
    38 def getregentry():
       
    39     return codecs.CodecInfo(
       
    40         name='rot-13',
       
    41         encode=Codec().encode,
       
    42         decode=Codec().decode,
       
    43         incrementalencoder=IncrementalEncoder,
       
    44         incrementaldecoder=IncrementalDecoder,
       
    45         streamwriter=StreamWriter,
       
    46         streamreader=StreamReader,
       
    47     )
       
    48 
       
    49 ### Decoding Map
       
    50 
       
    51 decoding_map = codecs.make_identity_dict(range(256))
       
    52 decoding_map.update({
       
    53    0x0041: 0x004e,
       
    54    0x0042: 0x004f,
       
    55    0x0043: 0x0050,
       
    56    0x0044: 0x0051,
       
    57    0x0045: 0x0052,
       
    58    0x0046: 0x0053,
       
    59    0x0047: 0x0054,
       
    60    0x0048: 0x0055,
       
    61    0x0049: 0x0056,
       
    62    0x004a: 0x0057,
       
    63    0x004b: 0x0058,
       
    64    0x004c: 0x0059,
       
    65    0x004d: 0x005a,
       
    66    0x004e: 0x0041,
       
    67    0x004f: 0x0042,
       
    68    0x0050: 0x0043,
       
    69    0x0051: 0x0044,
       
    70    0x0052: 0x0045,
       
    71    0x0053: 0x0046,
       
    72    0x0054: 0x0047,
       
    73    0x0055: 0x0048,
       
    74    0x0056: 0x0049,
       
    75    0x0057: 0x004a,
       
    76    0x0058: 0x004b,
       
    77    0x0059: 0x004c,
       
    78    0x005a: 0x004d,
       
    79    0x0061: 0x006e,
       
    80    0x0062: 0x006f,
       
    81    0x0063: 0x0070,
       
    82    0x0064: 0x0071,
       
    83    0x0065: 0x0072,
       
    84    0x0066: 0x0073,
       
    85    0x0067: 0x0074,
       
    86    0x0068: 0x0075,
       
    87    0x0069: 0x0076,
       
    88    0x006a: 0x0077,
       
    89    0x006b: 0x0078,
       
    90    0x006c: 0x0079,
       
    91    0x006d: 0x007a,
       
    92    0x006e: 0x0061,
       
    93    0x006f: 0x0062,
       
    94    0x0070: 0x0063,
       
    95    0x0071: 0x0064,
       
    96    0x0072: 0x0065,
       
    97    0x0073: 0x0066,
       
    98    0x0074: 0x0067,
       
    99    0x0075: 0x0068,
       
   100    0x0076: 0x0069,
       
   101    0x0077: 0x006a,
       
   102    0x0078: 0x006b,
       
   103    0x0079: 0x006c,
       
   104    0x007a: 0x006d,
       
   105 })
       
   106 
       
   107 ### Encoding Map
       
   108 
       
   109 encoding_map = codecs.make_encoding_map(decoding_map)
       
   110 
       
   111 ### Filter API
       
   112 
       
   113 def rot13(infile, outfile):
       
   114     outfile.write(infile.read().encode('rot-13'))
       
   115 
       
   116 if __name__ == '__main__':
       
   117     import sys
       
   118     rot13(sys.stdin, sys.stdout)