home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2010 November / maximum-cd-2010-11.iso / DiscContents / calibre-0.7.13.msi / file_1083 (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2010-08-06  |  6.3 KB  |  178 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, check_brackets
  8.  
  9. class AddBrackets:
  10.     
  11.     def __init__(self, in_file, bug_handler, copy = None, run_level = 1):
  12.         self._AddBrackets__file = in_file
  13.         self._AddBrackets__bug_handler = bug_handler
  14.         self._AddBrackets__copy = copy
  15.         self._AddBrackets__write_to = tempfile.mktemp()
  16.         self._AddBrackets__run_level = run_level
  17.  
  18.     
  19.     def __initiate_values(self):
  20.         self._AddBrackets__state_dict = {
  21.             'before_body': self._AddBrackets__before_body_func,
  22.             'in_body': self._AddBrackets__in_body_func,
  23.             'after_control_word': self._AddBrackets__after_control_word_func,
  24.             'in_ignore': self._AddBrackets__ignore_func }
  25.         self._AddBrackets__state = 'before_body'
  26.         self._AddBrackets__inline = { }
  27.         self._AddBrackets__temp_group = []
  28.         self._AddBrackets__open_bracket = 0
  29.         self._AddBrackets__found_brackets = 0
  30.         self._AddBrackets__accept = [
  31.             'cw<ci<bold______',
  32.             'cw<ci<annotation',
  33.             'cw<ci<blue______',
  34.             'cw<ci<bold______',
  35.             'cw<ci<caps______',
  36.             'cw<ci<char-style',
  37.             'cw<ci<dbl-strike',
  38.             'cw<ci<emboss____',
  39.             'cw<ci<engrave___',
  40.             'cw<ci<font-color',
  41.             'cw<ci<font-down_',
  42.             'cw<ci<font-size_',
  43.             'cw<ci<font-style',
  44.             'cw<ci<font-up___',
  45.             'cw<ci<footnot-mk',
  46.             'cw<ci<green_____',
  47.             'cw<ci<hidden____',
  48.             'cw<ci<italics___',
  49.             'cw<ci<outline___',
  50.             'cw<ci<red_______',
  51.             'cw<ci<shadow____',
  52.             'cw<ci<small-caps',
  53.             'cw<ci<strike-thr',
  54.             'cw<ci<subscript_',
  55.             'cw<ci<superscrip',
  56.             'cw<ci<underlined',
  57.             'cw<ul<underlined']
  58.  
  59.     
  60.     def __before_body_func(self, line):
  61.         if self._AddBrackets__token_info == 'mi<mk<body-open_':
  62.             self._AddBrackets__state = 'in_body'
  63.         
  64.         self._AddBrackets__write_obj.write(line)
  65.  
  66.     
  67.     def __in_body_func(self, line):
  68.         if line == 'cb<nu<clos-brack<0001\n' and self._AddBrackets__open_bracket:
  69.             self._AddBrackets__write_obj.write('cb<nu<clos-brack<0003\n')
  70.             self._AddBrackets__write_obj.write(line)
  71.         elif self._AddBrackets__token_info == 'ob<nu<open-brack':
  72.             self._AddBrackets__found_brackets = 1
  73.             self._AddBrackets__state = 'in_ignore'
  74.             self._AddBrackets__ignore_count = self._AddBrackets__ob_count
  75.             self._AddBrackets__write_obj.write(line)
  76.         elif self._AddBrackets__token_info in self._AddBrackets__accept:
  77.             self._AddBrackets__temp_group.append(line)
  78.             self._AddBrackets__state = 'after_control_word'
  79.         else:
  80.             self._AddBrackets__write_obj.write(line)
  81.  
  82.     
  83.     def __after_control_word_func(self, line):
  84.         if self._AddBrackets__token_info in self._AddBrackets__accept:
  85.             self._AddBrackets__temp_group.append(line)
  86.         else:
  87.             self._AddBrackets__change_permanent_group()
  88.             self._AddBrackets__write_group()
  89.             self._AddBrackets__write_obj.write(line)
  90.             if self._AddBrackets__token_info == 'ob<nu<open-brack':
  91.                 self._AddBrackets__state = 'in_ignore'
  92.                 self._AddBrackets__ignore_count = self._AddBrackets__ob_count
  93.             else:
  94.                 self._AddBrackets__state = 'in_body'
  95.  
  96.     
  97.     def __write_group(self):
  98.         if self._AddBrackets__open_bracket:
  99.             self._AddBrackets__write_obj.write('cb<nu<clos-brack<0003\n')
  100.             self._AddBrackets__open_bracket = 0
  101.         
  102.         inline_string = ''
  103.         the_keys = self._AddBrackets__inline.keys()
  104.         for the_key in the_keys:
  105.             value = self._AddBrackets__inline[the_key]
  106.             if value != 'false':
  107.                 inline_string += '%s<nu<%s\n' % (the_key, value)
  108.                 continue
  109.         
  110.         if inline_string:
  111.             self._AddBrackets__write_obj.write('ob<nu<open-brack<0003\n')
  112.             self._AddBrackets__write_obj.write(inline_string)
  113.             self._AddBrackets__open_bracket = 1
  114.         
  115.         self._AddBrackets__temp_group = []
  116.  
  117.     
  118.     def __change_permanent_group(self):
  119.         for line in self._AddBrackets__temp_group:
  120.             token_info = line[:16]
  121.             if token_info in self._AddBrackets__accept:
  122.                 att = line[20:-1]
  123.                 self._AddBrackets__inline[token_info] = att
  124.                 continue
  125.         
  126.  
  127.     
  128.     def __ignore_func(self, line):
  129.         self._AddBrackets__write_obj.write(line)
  130.         if self._AddBrackets__token_info == 'cb<nu<clos-brack' and self._AddBrackets__cb_count == self._AddBrackets__ignore_count:
  131.             self._AddBrackets__state = 'in_body'
  132.         
  133.  
  134.     
  135.     def __check_brackets(self, in_file):
  136.         self._AddBrackets__check_brack_obj = check_brackets.CheckBrackets(file = in_file)
  137.         good_br = self._AddBrackets__check_brack_obj.check_brackets()[0]
  138.         if not good_br:
  139.             return 1
  140.  
  141.     
  142.     def add_brackets(self):
  143.         self._AddBrackets__initiate_values()
  144.         read_obj = open(self._AddBrackets__file, 'r')
  145.         self._AddBrackets__write_obj = open(self._AddBrackets__write_to, 'w')
  146.         line_to_read = 1
  147.         while line_to_read:
  148.             line_to_read = read_obj.readline()
  149.             line = line_to_read
  150.             self._AddBrackets__token_info = line[:16]
  151.             if self._AddBrackets__token_info == 'ob<nu<open-brack':
  152.                 self._AddBrackets__ob_count = line[-5:-1]
  153.             
  154.             if self._AddBrackets__token_info == 'cb<nu<clos-brack':
  155.                 self._AddBrackets__cb_count = line[-5:-1]
  156.             
  157.             action = self._AddBrackets__state_dict.get(self._AddBrackets__state)
  158.             if action == None:
  159.                 sys.stderr.write('No matching state in module add_brackets.py\n')
  160.                 sys.stderr.write(self._AddBrackets__state + '\n')
  161.             
  162.             action(line)
  163.         read_obj.close()
  164.         self._AddBrackets__write_obj.close()
  165.         bad_brackets = self._AddBrackets__check_brackets(self._AddBrackets__write_to)
  166.         if not bad_brackets:
  167.             copy_obj = copy.Copy(bug_handler = self._AddBrackets__bug_handler)
  168.             if self._AddBrackets__copy:
  169.                 copy_obj.copy_file(self._AddBrackets__write_to, 'add_brackets.data')
  170.             
  171.             copy_obj.rename(self._AddBrackets__write_to, self._AddBrackets__file)
  172.         elif self._AddBrackets__run_level > 0:
  173.             sys.stderr.write('Sorry, but this files has a mix of old and new RTF.\nSome characteristics cannot be converted.\n')
  174.         
  175.         os.remove(self._AddBrackets__write_to)
  176.  
  177.  
  178.