symbian-qemu-0.9.1-12/python-2.6.1/Lib/encodings/palmos.py
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     1 """ Python Character Mapping Codec for PalmOS 3.5.
       
     2 
       
     3 Written by Sjoerd Mullender (sjoerd@acm.org); based on iso8859_15.py.
       
     4 
       
     5 """#"
       
     6 
       
     7 import codecs
       
     8 
       
     9 ### Codec APIs
       
    10 
       
    11 class Codec(codecs.Codec):
       
    12     def encode(self,input,errors='strict'):
       
    13         return codecs.charmap_encode(input,errors,encoding_map)
       
    14 
       
    15     def decode(self,input,errors='strict'):
       
    16         return codecs.charmap_decode(input,errors,decoding_map)
       
    17 
       
    18 class IncrementalEncoder(codecs.IncrementalEncoder):
       
    19     def encode(self, input, final=False):
       
    20         return codecs.charmap_encode(input,self.errors,encoding_map)[0]
       
    21 
       
    22 class IncrementalDecoder(codecs.IncrementalDecoder):
       
    23     def decode(self, input, final=False):
       
    24         return codecs.charmap_decode(input,self.errors,decoding_map)[0]
       
    25 
       
    26 class StreamWriter(Codec,codecs.StreamWriter):
       
    27     pass
       
    28 
       
    29 class StreamReader(Codec,codecs.StreamReader):
       
    30     pass
       
    31 
       
    32 ### encodings module API
       
    33 
       
    34 def getregentry():
       
    35     return codecs.CodecInfo(
       
    36         name='palmos',
       
    37         encode=Codec().encode,
       
    38         decode=Codec().decode,
       
    39         incrementalencoder=IncrementalEncoder,
       
    40         incrementaldecoder=IncrementalDecoder,
       
    41         streamreader=StreamReader,
       
    42         streamwriter=StreamWriter,
       
    43     )
       
    44 
       
    45 ### Decoding Map
       
    46 
       
    47 decoding_map = codecs.make_identity_dict(range(256))
       
    48 
       
    49 # The PalmOS character set is mostly iso-8859-1 with some differences.
       
    50 decoding_map.update({
       
    51         0x0080: 0x20ac, #       EURO SIGN
       
    52         0x0082: 0x201a, #       SINGLE LOW-9 QUOTATION MARK
       
    53         0x0083: 0x0192, #       LATIN SMALL LETTER F WITH HOOK
       
    54         0x0084: 0x201e, #       DOUBLE LOW-9 QUOTATION MARK
       
    55         0x0085: 0x2026, #       HORIZONTAL ELLIPSIS
       
    56         0x0086: 0x2020, #       DAGGER
       
    57         0x0087: 0x2021, #       DOUBLE DAGGER
       
    58         0x0088: 0x02c6, #       MODIFIER LETTER CIRCUMFLEX ACCENT
       
    59         0x0089: 0x2030, #       PER MILLE SIGN
       
    60         0x008a: 0x0160, #       LATIN CAPITAL LETTER S WITH CARON
       
    61         0x008b: 0x2039, #       SINGLE LEFT-POINTING ANGLE QUOTATION MARK
       
    62         0x008c: 0x0152, #       LATIN CAPITAL LIGATURE OE
       
    63         0x008d: 0x2666, #       BLACK DIAMOND SUIT
       
    64         0x008e: 0x2663, #       BLACK CLUB SUIT
       
    65         0x008f: 0x2665, #       BLACK HEART SUIT
       
    66         0x0090: 0x2660, #       BLACK SPADE SUIT
       
    67         0x0091: 0x2018, #       LEFT SINGLE QUOTATION MARK
       
    68         0x0092: 0x2019, #       RIGHT SINGLE QUOTATION MARK
       
    69         0x0093: 0x201c, #       LEFT DOUBLE QUOTATION MARK
       
    70         0x0094: 0x201d, #       RIGHT DOUBLE QUOTATION MARK
       
    71         0x0095: 0x2022, #       BULLET
       
    72         0x0096: 0x2013, #       EN DASH
       
    73         0x0097: 0x2014, #       EM DASH
       
    74         0x0098: 0x02dc, #       SMALL TILDE
       
    75         0x0099: 0x2122, #       TRADE MARK SIGN
       
    76         0x009a: 0x0161, #       LATIN SMALL LETTER S WITH CARON
       
    77         0x009c: 0x0153, #       LATIN SMALL LIGATURE OE
       
    78         0x009f: 0x0178, #       LATIN CAPITAL LETTER Y WITH DIAERESIS
       
    79 })
       
    80 
       
    81 ### Encoding Map
       
    82 
       
    83 encoding_map = codecs.make_encoding_map(decoding_map)