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

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. import sys
  5. import os
  6. import tempfile
  7. from calibre.ebooks.rtf2xml import copy
  8.  
  9. class DeleteInfo:
  10.     
  11.     def __init__(self, in_file, bug_handler, copy = None, run_level = 1):
  12.         self._DeleteInfo__file = in_file
  13.         self._DeleteInfo__bug_handler = bug_handler
  14.         self._DeleteInfo__copy = copy
  15.         self._DeleteInfo__write_to = tempfile.mktemp()
  16.         self._DeleteInfo__bracket_count = 0
  17.         self._DeleteInfo__ob_count = 0
  18.         self._DeleteInfo__cb_count = 0
  19.         self._DeleteInfo__after_asterisk = 0
  20.         self._DeleteInfo__delete = 0
  21.         self._DeleteInfo__initiate_allow()
  22.         self._DeleteInfo__ob = 0
  23.         self._DeleteInfo__write_cb = 0
  24.         self._DeleteInfo__run_level = run_level
  25.         self._DeleteInfo__found_delete = 0
  26.         self._DeleteInfo__list = 0
  27.  
  28.     
  29.     def __initiate_allow(self):
  30.         self._DeleteInfo__allowable = ('cw<ss<char-style', 'cw<it<listtable_', 'cw<it<revi-table', 'cw<ls<list-lev-d', 'cw<fd<field-inst', 'cw<an<book-mk-st', 'cw<an<book-mk-en', 'cw<an<annotation', 'cw<cm<comment___', 'cw<it<lovr-table')
  31.         self._DeleteInfo__not_allowable = ('cw<un<unknown___', 'cw<un<company___', 'cw<ls<list-level', 'cw<fd<datafield_')
  32.         self._DeleteInfo__state = 'default'
  33.         self._DeleteInfo__state_dict = {
  34.             'default': self._DeleteInfo__default_func,
  35.             'after_asterisk': self._DeleteInfo__asterisk_func,
  36.             'delete': self._DeleteInfo__delete_func,
  37.             'list': self._DeleteInfo__list_func }
  38.  
  39.     
  40.     def __default_func(self, line):
  41.         if self._DeleteInfo__token_info == 'cw<ml<asterisk__':
  42.             self._DeleteInfo__state = 'after_asterisk'
  43.             self._DeleteInfo__delete_count = self._DeleteInfo__ob_count
  44.         elif self._DeleteInfo__token_info == 'ob<nu<open-brack':
  45.             if self._DeleteInfo__ob:
  46.                 self._DeleteInfo__write_obj.write(self._DeleteInfo__ob)
  47.             
  48.             self._DeleteInfo__ob = line
  49.             return 0
  50.         if self._DeleteInfo__ob:
  51.             self._DeleteInfo__write_obj.write(self._DeleteInfo__ob)
  52.             self._DeleteInfo__ob = 0
  53.         
  54.         return 1
  55.  
  56.     
  57.     def __delete_func(self, line):
  58.         if self._DeleteInfo__delete_count == self._DeleteInfo__cb_count:
  59.             self._DeleteInfo__state = 'default'
  60.             if self._DeleteInfo__write_cb:
  61.                 self._DeleteInfo__write_cb = 0
  62.                 return 1
  63.             return 0
  64.  
  65.     
  66.     def __asterisk_func(self, line):
  67.         self._DeleteInfo__after_asterisk = 0
  68.         self._DeleteInfo__found_delete = 1
  69.         if self._DeleteInfo__token_info == 'cb<nu<clos-brack':
  70.             if self._DeleteInfo__delete_count == self._DeleteInfo__cb_count:
  71.                 self._DeleteInfo__state = 'default'
  72.                 self._DeleteInfo__ob = 0
  73.                 return 0
  74.             if self._DeleteInfo__run_level > 3:
  75.                 msg = 'flag problem\n'
  76.                 raise self._DeleteInfo__bug_handler, msg
  77.             self._DeleteInfo__run_level > 3
  78.             return 1
  79.         self._DeleteInfo__token_info == 'cb<nu<clos-brack'
  80.         if self._DeleteInfo__token_info in self._DeleteInfo__allowable:
  81.             if self._DeleteInfo__ob:
  82.                 self._DeleteInfo__write_obj.write(self._DeleteInfo__ob)
  83.                 self._DeleteInfo__ob = 0
  84.                 self._DeleteInfo__state = 'default'
  85.             
  86.             return 1
  87.         if self._DeleteInfo__token_info == 'cw<ls<list______':
  88.             self._DeleteInfo__ob = 0
  89.             self._DeleteInfo__found_list_func(line)
  90.         elif self._DeleteInfo__token_info in self._DeleteInfo__not_allowable:
  91.             if not self._DeleteInfo__ob:
  92.                 self._DeleteInfo__write_cb = 1
  93.             
  94.             self._DeleteInfo__ob = 0
  95.             self._DeleteInfo__state = 'delete'
  96.             self._DeleteInfo__cb_count = 0
  97.             return 0
  98.         if self._DeleteInfo__run_level > 5:
  99.             msg = 'After an asterisk, and found neither an allowable or non-allowble token\n'
  100.             msg += 'token is "%s"\n' % self._DeleteInfo__token_info
  101.             raise self._DeleteInfo__bug_handler
  102.         self._DeleteInfo__run_level > 5
  103.         if not self._DeleteInfo__ob:
  104.             self._DeleteInfo__write_cb = 1
  105.         
  106.         self._DeleteInfo__ob = 0
  107.         self._DeleteInfo__state = 'delete'
  108.         self._DeleteInfo__cb_count = 0
  109.         return 0
  110.  
  111.     
  112.     def __found_list_func(self, line):
  113.         self._DeleteInfo__state = 'list'
  114.  
  115.     
  116.     def __list_func(self, line):
  117.         if self._DeleteInfo__delete_count == self._DeleteInfo__cb_count and self._DeleteInfo__token_info == 'cb<nu<clos-brack':
  118.             self._DeleteInfo__state = 'default'
  119.             if self._DeleteInfo__write_cb:
  120.                 self._DeleteInfo__write_cb = 0
  121.                 return 1
  122.             return 0
  123.         if line[0:2] == 'cw':
  124.             return 1
  125.         return 0
  126.  
  127.     
  128.     def delete_info(self):
  129.         line_to_read = 'dummy'
  130.         read_obj = open(self._DeleteInfo__file, 'r')
  131.         self._DeleteInfo__write_obj = open(self._DeleteInfo__write_to, 'w')
  132.         while line_to_read:
  133.             to_print = 1
  134.             line_to_read = read_obj.readline()
  135.             line = line_to_read
  136.             self._DeleteInfo__token_info = line[:16]
  137.             if self._DeleteInfo__token_info == 'ob<nu<open-brack':
  138.                 self._DeleteInfo__ob_count = line[-5:-1]
  139.             
  140.             if self._DeleteInfo__token_info == 'cb<nu<clos-brack':
  141.                 self._DeleteInfo__cb_count = line[-5:-1]
  142.             
  143.             action = self._DeleteInfo__state_dict.get(self._DeleteInfo__state)
  144.             if not action:
  145.                 sys.stderr.write('No action in dictionary state is "%s" \n' % self._DeleteInfo__state)
  146.             
  147.             to_print = action(line)
  148.             if to_print:
  149.                 self._DeleteInfo__write_obj.write(line)
  150.                 continue
  151.         self._DeleteInfo__write_obj.close()
  152.         read_obj.close()
  153.         copy_obj = copy.Copy(bug_handler = self._DeleteInfo__bug_handler)
  154.         if self._DeleteInfo__copy:
  155.             copy_obj.copy_file(self._DeleteInfo__write_to, 'delete_info.data')
  156.         
  157.         copy_obj.rename(self._DeleteInfo__write_to, self._DeleteInfo__file)
  158.         os.remove(self._DeleteInfo__write_to)
  159.         return self._DeleteInfo__found_delete
  160.  
  161.  
  162.