home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2010 November / maximum-cd-2010-11.iso / DiscContents / calibre-0.7.13.msi / file_1109 (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2010-08-06  |  9.7 KB  |  308 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 Inline:
  10.     
  11.     def __init__(self, in_file, bug_handler, copy = None, run_level = 1):
  12.         self._Inline__file = in_file
  13.         self._Inline__bug_handler = bug_handler
  14.         self._Inline__copy = copy
  15.         self._Inline__run_level = run_level
  16.         self._Inline__write_to = tempfile.mktemp()
  17.  
  18.     
  19.     def __initiate_values(self):
  20.         self._Inline__state_dict = {
  21.             'default': self._Inline__default_func,
  22.             'after_open_bracket': self._Inline__after_open_bracket_func }
  23.         self._Inline__default_dict = {
  24.             'ob<nu<open-brack': self._Inline__found_open_bracket_func,
  25.             'tx<nu<__________': self._Inline__found_text_func,
  26.             'tx<hx<__________': self._Inline__found_text_func,
  27.             'tx<ut<__________': self._Inline__found_text_func,
  28.             'mi<mk<inline-fld': self._Inline__found_text_func,
  29.             'text': self._Inline__found_text_func,
  30.             'cw<nu<hard-lineb': self._Inline__found_text_func,
  31.             'cb<nu<clos-brack': self._Inline__close_bracket_func,
  32.             'mi<mk<par-end___': self._Inline__end_para_func,
  33.             'mi<mk<footnt-ope': self._Inline__end_para_func,
  34.             'mi<mk<footnt-ind': self._Inline__end_para_func }
  35.         self._Inline__after_open_bracket_dict = {
  36.             'cb<nu<clos-brack': self._Inline__close_bracket_func,
  37.             'tx<nu<__________': self._Inline__found_text_func,
  38.             'tx<hx<__________': self._Inline__found_text_func,
  39.             'tx<ut<__________': self._Inline__found_text_func,
  40.             'text': self._Inline__found_text_func,
  41.             'cw<nu<hard-lineb': self._Inline__found_text_func,
  42.             'mi<mk<inline-fld': self._Inline__found_text_func,
  43.             'ob<nu<open-brack': self._Inline__found_open_bracket_func,
  44.             'mi<mk<par-end___': self._Inline__end_para_func,
  45.             'mi<mk<footnt-ope': self._Inline__end_para_func,
  46.             'mi<mk<footnt-ind': self._Inline__end_para_func,
  47.             'cw<fd<field_____': self._Inline__found_field_func }
  48.         self._Inline__state = 'default'
  49.         self._Inline__brac_count = 0
  50.         self._Inline__list_inline_list = []
  51.         self._Inline__body_inline_list = []
  52.         self._Inline__groups_in_waiting_list = [
  53.             0]
  54.         self._Inline__groups_in_waiting_body = [
  55.             0]
  56.         self._Inline__groups_in_waiting = self._Inline__groups_in_waiting_body
  57.         self._Inline__place = 'non_list'
  58.         self._Inline__inline_list = self._Inline__body_inline_list
  59.         self._Inline__in_para = 0
  60.         self._Inline__char_dict = {
  61.             'annotation': 'annotation',
  62.             'blue______': 'blue',
  63.             'bold______': 'bold',
  64.             'caps______': 'caps',
  65.             'char-style': 'character-style',
  66.             'dbl-strike': 'double-strike-through',
  67.             'emboss____': 'emboss',
  68.             'engrave___': 'engrave',
  69.             'font-color': 'font-color',
  70.             'font-down_': 'subscript',
  71.             'font-size_': 'font-size',
  72.             'font-style': 'font-style',
  73.             'font-up___': 'superscript',
  74.             'footnot-mk': 'footnote-marker',
  75.             'green_____': 'green',
  76.             'hidden____': 'hidden',
  77.             'italics___': 'italics',
  78.             'outline___': 'outline',
  79.             'red_______': 'red',
  80.             'shadow____': 'shadow',
  81.             'small-caps': 'small-caps',
  82.             'strike-thr': 'strike-through',
  83.             'subscript_': 'subscript',
  84.             'superscrip': 'superscript',
  85.             'underlined': 'underlined' }
  86.         self._Inline__caps_list = [
  87.             'false']
  88.  
  89.     
  90.     def __set_list_func(self, line):
  91.         if self._Inline__place == 'in_list':
  92.             if self._Inline__token_info == 'mi<mk<lst-tx-end':
  93.                 self._Inline__place = 'not_in_list'
  94.                 self._Inline__inline_list = self._Inline__body_inline_list
  95.                 self._Inline__groups_in_waiting = self._Inline__groups_in_waiting_body
  96.             
  97.         elif self._Inline__token_info == 'mi<mk<lst-tx-beg':
  98.             self._Inline__place = 'in_list'
  99.             self._Inline__inline_list = self._Inline__list_inline_list
  100.             self._Inline__groups_in_waiting = self._Inline__groups_in_waiting_list
  101.         
  102.  
  103.     
  104.     def __default_func(self, line):
  105.         action = self._Inline__default_dict.get(self._Inline__token_info)
  106.         if action:
  107.             action(line)
  108.         
  109.         if self._Inline__token_info != 'cw<nu<hard-lineb':
  110.             self._Inline__write_obj.write(line)
  111.         
  112.  
  113.     
  114.     def __found_open_bracket_func(self, line):
  115.         self._Inline__state = 'after_open_bracket'
  116.         self._Inline__brac_count += 1
  117.         self._Inline__groups_in_waiting[0] += 1
  118.         self._Inline__inline_list.append({ })
  119.         self._Inline__inline_list[-1]['contains_inline'] = 0
  120.  
  121.     
  122.     def __after_open_bracket_func(self, line):
  123.         if line[0:5] == 'cw<ci':
  124.             self._Inline__handle_control_word(line)
  125.         else:
  126.             action = self._Inline__after_open_bracket_dict.get(self._Inline__token_info)
  127.             if action:
  128.                 self._Inline__state = 'default'
  129.                 action(line)
  130.             
  131.         self._Inline__write_obj.write(line)
  132.  
  133.     
  134.     def __handle_control_word(self, line):
  135.         char_info = line[6:16]
  136.         char_value = line[20:-1]
  137.         name = self._Inline__char_dict.get(char_info)
  138.         if name:
  139.             self._Inline__inline_list[-1]['contains_inline'] = 1
  140.             self._Inline__inline_list[-1][name] = char_value
  141.         
  142.  
  143.     
  144.     def __close_bracket_func(self, line):
  145.         if len(self._Inline__inline_list) == 0:
  146.             return None
  147.         the_dict = self._Inline__inline_list[-1]
  148.         the_keys = the_dict.keys()
  149.         if self._Inline__place == 'in_list':
  150.             if 'contains_inline' in the_keys and the_dict['contains_inline'] == 1 and self._Inline__groups_in_waiting[0] == 0:
  151.                 self._Inline__write_obj.write('mi<tg<close_____<inline\n')
  152.                 if 'font-style' in the_keys:
  153.                     self._Inline__write_obj.write('mi<mk<font-end__\n')
  154.                 
  155.                 if 'caps' in the_keys:
  156.                     self._Inline__write_obj.write('mi<mk<caps-end__\n')
  157.                 
  158.             
  159.         elif 'contains_inline' in the_keys and the_dict['contains_inline'] == 1 and self._Inline__in_para and self._Inline__groups_in_waiting[0] == 0:
  160.             self._Inline__write_obj.write('mi<tg<close_____<inline\n')
  161.             if 'font-style' in the_keys:
  162.                 self._Inline__write_obj.write('mi<mk<font-end__\n')
  163.             
  164.             if 'caps' in the_keys:
  165.                 self._Inline__write_obj.write('mi<mk<caps-end__\n')
  166.             
  167.         
  168.         self._Inline__inline_list.pop()
  169.         if self._Inline__groups_in_waiting[0] != 0:
  170.             self._Inline__groups_in_waiting[0] -= 1
  171.         
  172.  
  173.     
  174.     def __found_text_func(self, line):
  175.         if self._Inline__place == 'in_list':
  176.             self._Inline__write_inline()
  177.         elif not self._Inline__in_para:
  178.             self._Inline__in_para = 1
  179.             self._Inline__start_para_func(line)
  180.         elif self._Inline__token_info == 'cw<nu<hard-lineb':
  181.             self._Inline__write_obj.write('mi<tg<empty_____<hardline-break\n')
  182.         
  183.         if self._Inline__groups_in_waiting[0] != 0:
  184.             self._Inline__write_inline()
  185.         
  186.  
  187.     
  188.     def __write_inline(self):
  189.         if self._Inline__groups_in_waiting[0] != 0:
  190.             last_index = -1 * self._Inline__groups_in_waiting[0]
  191.             inline_list = self._Inline__inline_list[last_index:]
  192.             if len(inline_list) <= 0:
  193.                 if self._Inline__run_level > 3:
  194.                     msg = 'self.__inline_list is %s\n' % self._Inline__inline_list
  195.                     raise self._Inline__bug_handler, msg
  196.                 self._Inline__run_level > 3
  197.                 self._Inline__write_obj.write('error\n')
  198.                 self._Inline__groups_in_waiting[0] = 0
  199.                 return None
  200.             for the_dict in inline_list:
  201.                 if the_dict['contains_inline']:
  202.                     the_keys = the_dict.keys()
  203.                     if 'font-style' in the_keys:
  204.                         face = the_dict['font-style']
  205.                         self._Inline__write_obj.write('mi<mk<font______<%s\n' % face)
  206.                     
  207.                     if 'caps' in the_keys:
  208.                         value = the_dict['caps']
  209.                         self._Inline__write_obj.write('mi<mk<caps______<%s\n' % value)
  210.                     
  211.                     self._Inline__write_obj.write('mi<tg<open-att__<inline')
  212.                     for the_key in the_keys:
  213.                         if the_key != 'contains_inline':
  214.                             self._Inline__write_obj.write('<%s>%s' % (the_key, the_dict[the_key]))
  215.                             continue
  216.                     
  217.                     self._Inline__write_obj.write('\n')
  218.                     continue
  219.             
  220.         
  221.         self._Inline__groups_in_waiting[0] = 0
  222.  
  223.     
  224.     def __end_para_func(self, line):
  225.         if not self._Inline__in_para:
  226.             return None
  227.         if self._Inline__groups_in_waiting[0] == 0:
  228.             inline_list = self._Inline__inline_list
  229.         else:
  230.             last_index = -1 * self._Inline__groups_in_waiting[0]
  231.             inline_list = self._Inline__inline_list[0:last_index]
  232.         for the_dict in inline_list:
  233.             contains_info = the_dict.get('contains_inline')
  234.             if contains_info:
  235.                 the_keys = the_dict.keys()
  236.                 if 'font-style' in the_keys:
  237.                     self._Inline__write_obj.write('mi<mk<font-end__\n')
  238.                 
  239.                 if 'caps' in the_keys:
  240.                     self._Inline__write_obj.write('mi<mk<caps-end__\n')
  241.                 
  242.                 self._Inline__write_obj.write('mi<tg<close_____<inline\n')
  243.                 continue
  244.         
  245.         self._Inline__in_para = 0
  246.  
  247.     
  248.     def __start_para_func(self, line):
  249.         for the_dict in self._Inline__inline_list:
  250.             contains_info = the_dict.get('contains_inline')
  251.             if contains_info:
  252.                 the_keys = the_dict.keys()
  253.                 if 'font-style' in the_keys:
  254.                     face = the_dict['font-style']
  255.                     self._Inline__write_obj.write('mi<mk<font______<%s\n' % face)
  256.                 
  257.                 if 'caps' in the_keys:
  258.                     value = the_dict['caps']
  259.                     self._Inline__write_obj.write('mi<mk<caps______<%s\n' % value)
  260.                 
  261.                 self._Inline__write_obj.write('mi<tg<open-att__<inline')
  262.                 for the_key in the_keys:
  263.                     if the_key != 'contains_inline':
  264.                         self._Inline__write_obj.write('<%s>%s' % (the_key, the_dict[the_key]))
  265.                         continue
  266.                 
  267.                 self._Inline__write_obj.write('\n')
  268.                 continue
  269.         
  270.         self._Inline__groups_in_waiting[0] = 0
  271.  
  272.     
  273.     def __found_field_func(self, line):
  274.         pass
  275.  
  276.     
  277.     def form_tags(self):
  278.         self._Inline__initiate_values()
  279.         read_obj = open(self._Inline__file, 'r')
  280.         self._Inline__write_obj = open(self._Inline__write_to, 'w')
  281.         line_to_read = 1
  282.         while line_to_read:
  283.             line_to_read = read_obj.readline()
  284.             line = line_to_read
  285.             token = line[0:-1]
  286.             self._Inline__token_info = ''
  287.             if token == 'tx<mc<__________<rdblquote' and token == 'tx<mc<__________<ldblquote' and token == 'tx<mc<__________<lquote' and token == 'tx<mc<__________<rquote' and token == 'tx<mc<__________<emdash' and token == 'tx<mc<__________<endash' or token == 'tx<mc<__________<bullet':
  288.                 self._Inline__token_info = 'text'
  289.             else:
  290.                 self._Inline__token_info = line[:16]
  291.             self._Inline__set_list_func(line)
  292.             action = self._Inline__state_dict.get(self._Inline__state)
  293.             if action == None:
  294.                 sys.stderr.write('No matching state in module inline_for_lists.py\n')
  295.                 sys.stderr.write(self._Inline__state + '\n')
  296.             
  297.             action(line)
  298.         read_obj.close()
  299.         self._Inline__write_obj.close()
  300.         copy_obj = copy.Copy(bug_handler = self._Inline__bug_handler)
  301.         if self._Inline__copy:
  302.             copy_obj.copy_file(self._Inline__write_to, 'inline.data')
  303.         
  304.         copy_obj.rename(self._Inline__write_to, self._Inline__file)
  305.         os.remove(self._Inline__write_to)
  306.  
  307.  
  308.