home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2010 November / maximum-cd-2010-11.iso / DiscContents / calibre-0.7.13.msi / file_1146 (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2010-08-06  |  1.9 KB  |  44 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. __license__ = 'GPL 3'
  5. __copyright__ = '2009, John Schember <john@nachtimwald.com>'
  6. __docformat__ = 'restructuredtext en'
  7. import re
  8. from calibre.ebooks.unidecode.unicodepoints import CODEPOINTS
  9. from calibre.constants import preferred_encoding
  10.  
  11. class Unidecoder(object):
  12.     
  13.     def decode(self, text):
  14.         if not isinstance(text, unicode):
  15.             
  16.             try:
  17.                 text = unicode(text)
  18.             try:
  19.                 text = text.decode(preferred_encoding)
  20.             text = text.decode('utf-8', 'replace')
  21.  
  22.         
  23.         isinstance(text, unicode)
  24.         return re.sub(('[^\x00-\x7f]',), (lambda x: self.replace_point(x.group())), text)
  25.  
  26.     
  27.     def replace_point(self, codepoint):
  28.         
  29.         try:
  30.             return CODEPOINTS[self.code_group(codepoint)][self.grouped_point(codepoint)]
  31.         except:
  32.             return '?'
  33.  
  34.  
  35.     
  36.     def code_group(self, character):
  37.         return u'x%02x' % (ord(unicode(character)) >> 8)
  38.  
  39.     
  40.     def grouped_point(self, character):
  41.         return ord(unicode(character)) & 255
  42.  
  43.  
  44.