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

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. __all__ = [
  5.     'base64_len',
  6.     'body_decode',
  7.     'body_encode',
  8.     'decode',
  9.     'decodestring',
  10.     'encode',
  11.     'encodestring',
  12.     'header_encode']
  13. from binascii import b2a_base64, a2b_base64
  14. from email.utils import fix_eols
  15. CRLF = '\r\n'
  16. NL = '\n'
  17. EMPTYSTRING = ''
  18. MISC_LEN = 7
  19.  
  20. def base64_len(s):
  21.     (groups_of_3, leftover) = divmod(len(s), 3)
  22.     n = groups_of_3 * 4
  23.     if leftover:
  24.         n += 4
  25.     
  26.     return n
  27.  
  28.  
  29. def header_encode(header, charset = 'iso-8859-1', keep_eols = False, maxlinelen = 76, eol = NL):
  30.     if not header:
  31.         return header
  32.     if not keep_eols:
  33.         header = fix_eols(header)
  34.     
  35.     base64ed = []
  36.     max_encoded = maxlinelen - len(charset) - MISC_LEN
  37.     max_unencoded = max_encoded * 3 // 4
  38.     for i in range(0, len(header), max_unencoded):
  39.         base64ed.append(b2a_base64(header[i:i + max_unencoded]))
  40.     
  41.     lines = []
  42.     for line in base64ed:
  43.         if line.endswith(NL):
  44.             line = line[:-1]
  45.         
  46.         lines.append('=?%s?b?%s?=' % (charset, line))
  47.     
  48.     joiner = eol + ' '
  49.     return joiner.join(lines)
  50.  
  51.  
  52. def encode(s, binary = True, maxlinelen = 76, eol = NL):
  53.     if not s:
  54.         return s
  55.     if not binary:
  56.         s = fix_eols(s)
  57.     
  58.     encvec = []
  59.     max_unencoded = maxlinelen * 3 // 4
  60.     for i in range(0, len(s), max_unencoded):
  61.         enc = b2a_base64(s[i:i + max_unencoded])
  62.         if enc.endswith(NL) and eol != NL:
  63.             enc = enc[:-1] + eol
  64.         
  65.         encvec.append(enc)
  66.     
  67.     return EMPTYSTRING.join(encvec)
  68.  
  69. body_encode = encode
  70. encodestring = encode
  71.  
  72. def decode(s, convert_eols = None):
  73.     if not s:
  74.         return s
  75.     dec = a2b_base64(s)
  76.     if convert_eols:
  77.         return dec.replace(CRLF, convert_eols)
  78.     return dec
  79.  
  80. body_decode = decode
  81. decodestring = decode
  82.