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

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. import os
  5. import re
  6. import tempfile
  7. from calibre.ebooks.rtf2xml import copy
  8.  
  9. class Tokenize:
  10.     
  11.     def __init__(self, in_file, bug_handler, copy = None, run_level = 1):
  12.         self._Tokenize__file = in_file
  13.         self._Tokenize__bug_handler = bug_handler
  14.         self._Tokenize__copy = copy
  15.         self._Tokenize__special_tokens = [
  16.             '_',
  17.             '~',
  18.             "'",
  19.             '{',
  20.             '}']
  21.         self._Tokenize__write_to = tempfile.mktemp()
  22.  
  23.     
  24.     def __from_ms_to_utf8(self, match_obj):
  25.         uni_char = int(match_obj.group(1))
  26.         if uni_char < 0:
  27.             uni_char += 65536
  28.         
  29.         return '&#x' + str('%X' % uni_char) + ';'
  30.  
  31.     
  32.     def __neg_unicode_func(self, match_obj):
  33.         neg_uni_char = int(match_obj.group(1)) * -1
  34.         uni_char = neg_uni_char + 65536
  35.         return '&#x' + str('%X' % uni_char) + ';'
  36.  
  37.     
  38.     def __sub_line_reg(self, line):
  39.         line = line.replace('\\\\', '\\backslash ')
  40.         line = line.replace('\\~', '\\~ ')
  41.         line = line.replace('\\;', '\\; ')
  42.         line = line.replace('&', '&')
  43.         line = line.replace('<', '<')
  44.         line = line.replace('>', '>')
  45.         line = line.replace('\\~', '\\~ ')
  46.         line = line.replace('\\_', '\\_ ')
  47.         line = line.replace('\\:', '\\: ')
  48.         line = line.replace('\\-', '\\- ')
  49.         line = line.replace('\\{', '\\ob ')
  50.         line = line.replace('\\}', '\\cb ')
  51.         line = line.replace('{', '\\{')
  52.         line = line.replace('}', '\\}')
  53.         line = re.sub(self._Tokenize__utf_exp, self._Tokenize__from_ms_to_utf8, line)
  54.         line = re.sub(self._Tokenize__ms_hex_exp, '\\mshex0\\g<1> ', line)
  55.         line = re.sub(self._Tokenize__par_exp, '\\par ', line)
  56.         return line
  57.  
  58.     
  59.     def __compile_expressions(self):
  60.         self._Tokenize__ms_hex_exp = re.compile("\\\\\\'(..)")
  61.         self._Tokenize__utf_exp = re.compile('\\\\u(-?\\d{3,6}) {0,1}')
  62.         self._Tokenize__splitexp = re.compile('(\\\\[\\\\{}]|{|}|\\\\[^\\s\\\\{}&]+(?:\\s)?)')
  63.         self._Tokenize__par_exp = re.compile('\\\\$')
  64.         self._Tokenize__mixed_exp = re.compile('(\\\\[a-zA-Z]+\\d+)(\\D+)')
  65.  
  66.     
  67.     def __create_tokens(self):
  68.         self._Tokenize__compile_expressions()
  69.         read_obj = open(self._Tokenize__file, 'r')
  70.         write_obj = open(self._Tokenize__write_to, 'w')
  71.         line_to_read = 'dummy'
  72.         while line_to_read:
  73.             line_to_read = read_obj.readline()
  74.             line = line_to_read
  75.             line = line.replace('\n', '')
  76.             line = self._Tokenize__sub_line_reg(line)
  77.             tokens = re.split(self._Tokenize__splitexp, line)
  78.             for token in tokens:
  79.                 if token != '':
  80.                     write_obj.write(token + '\n')
  81.                     continue
  82.             
  83.         read_obj.close()
  84.         write_obj.close()
  85.  
  86.     
  87.     def tokenize(self):
  88.         self._Tokenize__create_tokens()
  89.         copy_obj = copy.Copy(bug_handler = self._Tokenize__bug_handler)
  90.         if self._Tokenize__copy:
  91.             copy_obj.copy_file(self._Tokenize__write_to, 'tokenize.data')
  92.         
  93.         copy_obj.rename(self._Tokenize__write_to, self._Tokenize__file)
  94.         os.remove(self._Tokenize__write_to)
  95.  
  96.  
  97.