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

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4.  
  5. class ListTable:
  6.     
  7.     def __init__(self, bug_handler, run_level = 1):
  8.         self._ListTable__bug_handler = bug_handler
  9.         self._ListTable__initiate_values()
  10.         self._ListTable__run_level = run_level
  11.  
  12.     
  13.     def __initiate_values(self):
  14.         self._ListTable__list_table_final = ''
  15.         self._ListTable__state = 'default'
  16.         self._ListTable__final_dict = { }
  17.         self._ListTable__list_dict = { }
  18.         self._ListTable__all_lists = []
  19.         self._ListTable__level_text_string = ''
  20.         self._ListTable__level_text_list = []
  21.         self._ListTable__found_level_text_length = 0
  22.         self._ListTable__level_text_position = None
  23.         self._ListTable__prefix_string = None
  24.         self._ListTable__level_numbers_string = ''
  25.         self._ListTable__state_dict = {
  26.             'default': self._ListTable__default_func,
  27.             'level': self._ListTable__level_func,
  28.             'list': self._ListTable__list_func,
  29.             'unsure_ob': self._ListTable__after_bracket_func,
  30.             'level_number': self._ListTable__level_number_func,
  31.             'level_text': self._ListTable__level_text_func,
  32.             'list_name': self._ListTable__list_name_func }
  33.         self._ListTable__main_list_dict = {
  34.             'cw<ls<ls-tem-id_': 'list-template-id',
  35.             'cw<ls<list-hybri': 'list-hybrid',
  36.             'cw<ls<lis-tbl-id': 'list-table-id' }
  37.         self._ListTable__level_dict = {
  38.             'cw<ls<level-star': 'list-number-start',
  39.             'cw<ls<level-spac': 'list-space',
  40.             'cw<ls<level-inde': 'level-indent',
  41.             'cw<ls<fir-ln-ind': 'first-line-indent',
  42.             'cw<ls<left-inden': 'left-indent',
  43.             'cw<ls<tab-stop__': 'tabs',
  44.             'cw<ls<level-type': 'numbering-type',
  45.             'cw<pf<right-inde': 'right-indent',
  46.             'cw<pf<left-inden': 'left-indent',
  47.             'cw<pf<fir-ln-ind': 'first-line-indent',
  48.             'cw<ci<italics___': 'italics',
  49.             'cw<ci<bold______': 'bold',
  50.             'cw<ss<para-style': 'paragraph-style-name' }
  51.  
  52.     
  53.     def __parse_lines(self, line):
  54.         lines = line.split('\n')
  55.         self._ListTable__ob_count = 0
  56.         self._ListTable__ob_group = 0
  57.         for line in lines:
  58.             self._ListTable__token_info = line[:16]
  59.             if self._ListTable__token_info == 'ob<nu<open-brack':
  60.                 self._ListTable__ob_count = line[-4:]
  61.                 self._ListTable__ob_group += 1
  62.             
  63.             if self._ListTable__token_info == 'cb<nu<clos-brack':
  64.                 self._ListTable__cb_count = line[-4:]
  65.                 self._ListTable__ob_group -= 1
  66.             
  67.             action = self._ListTable__state_dict.get(self._ListTable__state)
  68.             if action == None:
  69.                 print self._ListTable__state
  70.             
  71.             action(line)
  72.         
  73.         self._ListTable__write_final_string()
  74.  
  75.     
  76.     def __default_func(self, line):
  77.         if self._ListTable__token_info == 'ob<nu<open-brack':
  78.             self._ListTable__state = 'unsure_ob'
  79.         
  80.  
  81.     
  82.     def __found_list_func(self, line):
  83.         self._ListTable__state = 'list'
  84.         self._ListTable__list_ob_count = self._ListTable__ob_count
  85.         self._ListTable__all_lists.append([])
  86.         the_dict = {
  87.             'list-id': [] }
  88.         self._ListTable__all_lists[-1].append(the_dict)
  89.  
  90.     
  91.     def __list_func(self, line):
  92.         if self._ListTable__token_info == 'cb<nu<clos-brack' and self._ListTable__cb_count == self._ListTable__list_ob_count:
  93.             self._ListTable__state = 'default'
  94.         elif self._ListTable__token_info == 'ob<nu<open-brack':
  95.             self._ListTable__state = 'unsure_ob'
  96.         else:
  97.             att = self._ListTable__main_list_dict.get(self._ListTable__token_info)
  98.             if att:
  99.                 value = line[20:]
  100.                 self._ListTable__all_lists[-1][0][att] = value
  101.             
  102.  
  103.     
  104.     def __found_level_func(self, line):
  105.         self._ListTable__state = 'level'
  106.         self._ListTable__level_ob_count = self._ListTable__ob_count
  107.         self._ListTable__all_lists[-1].append([])
  108.         the_dict = { }
  109.         self._ListTable__all_lists[-1][-1].append(the_dict)
  110.         self._ListTable__level_dict
  111.  
  112.     
  113.     def __level_func(self, line):
  114.         if self._ListTable__token_info == 'cb<nu<clos-brack' and self._ListTable__cb_count == self._ListTable__level_ob_count:
  115.             self._ListTable__state = 'list'
  116.         elif self._ListTable__token_info == 'ob<nu<open-brack':
  117.             self._ListTable__state = 'unsure_ob'
  118.         else:
  119.             att = self._ListTable__level_dict.get(self._ListTable__token_info)
  120.             if att:
  121.                 value = line[20:]
  122.                 self._ListTable__all_lists[-1][-1][0][att] = value
  123.             
  124.  
  125.     
  126.     def __level_number_func(self, line):
  127.         if self._ListTable__token_info == 'cb<nu<clos-brack' and self._ListTable__cb_count == self._ListTable__level_number_ob_count:
  128.             self._ListTable__state = 'level'
  129.             self._ListTable__all_lists[-1][-1][0]['level-numbers'] = self._ListTable__level_numbers_string
  130.             self._ListTable__level_numbers_string = ''
  131.         elif self._ListTable__token_info == 'tx<hx<__________':
  132.             self._ListTable__level_numbers_string += '\\'%s' % line[18:]
  133.         elif self._ListTable__token_info == 'tx<nu<__________':
  134.             self._ListTable__level_numbers_string += line[17:]
  135.         
  136.  
  137.     
  138.     def __level_text_func(self, line):
  139.         if self._ListTable__token_info == 'cb<nu<clos-brack' and self._ListTable__cb_count == self._ListTable__level_text_ob_count:
  140.             if self._ListTable__prefix_string:
  141.                 if self._ListTable__all_lists[-1][-1][0]['numbering-type'] == 'bullet':
  142.                     self._ListTable__prefix_string = self._ListTable__prefix_string.replace('_', '')
  143.                     self._ListTable__all_lists[-1][-1][0]['bullet-type'] = self._ListTable__prefix_string
  144.                 
  145.             
  146.             self._ListTable__state = 'level'
  147.             self._ListTable__level_text_string = ''
  148.             self._ListTable__found_level_text_length = 0
  149.         elif self._ListTable__token_info == 'tx<hx<__________':
  150.             self._ListTable__parse_level_text_length(line)
  151.         elif self._ListTable__token_info == 'tx<nu<__________':
  152.             text = line[17:]
  153.             if text and text[-1] == ';':
  154.                 text = text.replace(';', '')
  155.             
  156.             if not self._ListTable__level_text_position:
  157.                 self._ListTable__prefix_string = text
  158.             else:
  159.                 self._ListTable__all_lists[-1][-1][0][self._ListTable__level_text_position] = text
  160.         elif self._ListTable__token_info == 'cw<ls<lv-tem-id_':
  161.             value = line[20:]
  162.             self._ListTable__all_lists[-1][-1][0]['level-template-id'] = value
  163.         
  164.  
  165.     
  166.     def __parse_level_text_length(self, line):
  167.         num = line[18:]
  168.         the_num = int(num, 16)
  169.         if not self._ListTable__found_level_text_length:
  170.             self._ListTable__all_lists[-1][-1][0]['list-text-length'] = str(the_num)
  171.             self._ListTable__found_level_text_length = 1
  172.         else:
  173.             the_num += 1
  174.             the_string = str(the_num)
  175.             level_marker = 'level%s-suffix' % the_string
  176.             show_marker = 'show-level%s' % the_string
  177.             self._ListTable__level_text_position = level_marker
  178.             self._ListTable__all_lists[-1][-1][0][show_marker] = 'true'
  179.             if self._ListTable__prefix_string:
  180.                 prefix_marker = 'level%s-prefix' % the_string
  181.                 self._ListTable__all_lists[-1][-1][0][prefix_marker] = self._ListTable__prefix_string
  182.                 self._ListTable__prefix_string = None
  183.             
  184.  
  185.     
  186.     def __list_name_func(self, line):
  187.         if self._ListTable__token_info == 'cb<nu<clos-brack' and self._ListTable__cb_count == self._ListTable__list_name_ob_count:
  188.             self._ListTable__state = 'list'
  189.         
  190.  
  191.     
  192.     def __after_bracket_func(self, line):
  193.         if self._ListTable__token_info == 'cw<ls<level-text':
  194.             self._ListTable__state = 'level_text'
  195.             self._ListTable__level_text_ob_count = self._ListTable__ob_count
  196.         elif self._ListTable__token_info == 'cw<ls<level-numb':
  197.             self._ListTable__level_number_ob_count = self._ListTable__ob_count
  198.             self._ListTable__state = 'level_number'
  199.         elif self._ListTable__token_info == 'cw<ls<list-tb-le':
  200.             self._ListTable__found_level_func(line)
  201.         elif self._ListTable__token_info == 'cw<ls<list-in-tb':
  202.             self._ListTable__found_list_func(line)
  203.         elif self._ListTable__token_info == 'cw<ls<list-name_':
  204.             self._ListTable__state = 'list_name'
  205.             self._ListTable__list_name_ob_count = self._ListTable__ob_count
  206.         elif self._ListTable__run_level > 3:
  207.             msg = 'No matching token after open bracket\n'
  208.             msg += 'token is "%s\n"' % line
  209.             raise self._ListTable__bug_handler
  210.         
  211.  
  212.     
  213.     def __add_to_final_line(self):
  214.         self._ListTable__list_table_final = 'mi<mk<listabbeg_\n'
  215.         self._ListTable__list_table_final += 'mi<tg<open______<list-table\n' + 'mi<mk<listab-beg\n' + self._ListTable__list_table_final
  216.         self._ListTable__list_table_final += 'mi<mk<listab-end\n' + 'mi<tg<close_____<list-table\n'
  217.         self._ListTable__list_table_final += 'mi<mk<listabend_\n'
  218.  
  219.     
  220.     def __write_final_string(self):
  221.         not_allow = [
  222.             'list-id']
  223.         id = 0
  224.         self._ListTable__list_table_final = 'mi<mk<listabbeg_\n'
  225.         self._ListTable__list_table_final += 'mi<tg<open______<list-table\n' + 'mi<mk<listab-beg\n' + self._ListTable__list_table_final
  226.         for list in self._ListTable__all_lists:
  227.             id += 1
  228.             self._ListTable__list_table_final += 'mi<tg<open-att__<list-in-table'
  229.             the_dict = list[0]
  230.             the_keys = the_dict.keys()
  231.             for the_key in the_keys:
  232.                 att = the_key
  233.                 value = the_dict[att]
  234.                 self._ListTable__list_table_final += '<%s>%s' % (att, value)
  235.             
  236.             self._ListTable__list_table_final += '\n'
  237.             levels = list[1:]
  238.             level_num = 0
  239.             for level in levels:
  240.                 level_num += 1
  241.                 self._ListTable__list_table_final += 'mi<tg<empty-att_<level-in-table'
  242.                 self._ListTable__list_table_final += '<level>%s' % str(level_num)
  243.                 the_dict2 = level[0]
  244.                 the_keys2 = the_dict2.keys()
  245.                 is_bullet = 0
  246.                 bullet_text = ''
  247.                 for the_key2 in the_keys2:
  248.                     test_bullet = the_dict2.get('numbering-type')
  249.                     att2 = the_key2
  250.                     value2 = the_dict2[att2]
  251.                     if att2[0:10] == 'show-level' and is_bullet:
  252.                         continue
  253.                     None if the_key in not_allow else self if test_bullet == 'bullet' else self
  254.                     if att2[-6:] == 'suffix' and is_bullet:
  255.                         bullet_text += value2
  256.                         continue
  257.                     if att2[-6:] == 'prefix' and is_bullet:
  258.                         bullet_text += value2
  259.                         continue
  260.                     self._ListTable__list_table_final += '<%s>%s' % (att2, value2)
  261.                 
  262.                 if is_bullet:
  263.                     pass
  264.                 
  265.                 self._ListTable__list_table_final += '\n'
  266.             
  267.             self._ListTable__list_table_final += 'mi<tg<close_____<list-in-table\n'
  268.         
  269.         self._ListTable__list_table_final += 'mi<mk<listab-end\n' + 'mi<tg<close_____<list-table\n'
  270.         self._ListTable__list_table_final += 'mi<mk<listabend_\n'
  271.  
  272.     
  273.     def parse_list_table(self, line):
  274.         self._ListTable__parse_lines(line)
  275.         return (self._ListTable__list_table_final, self._ListTable__all_lists)
  276.  
  277.  
  278.