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

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. import sys
  5. import os
  6. import tempfile
  7. import re
  8. from calibre.ebooks.rtf2xml import copy
  9.  
  10. class GroupBorders:
  11.     
  12.     def __init__(self, in_file, bug_handler, copy = None, run_level = 1, wrap = 0):
  13.         self._GroupBorders__file = in_file
  14.         self._GroupBorders__bug_handler = bug_handler
  15.         self._GroupBorders__copy = copy
  16.         self._GroupBorders__run_level = run_level
  17.         self._GroupBorders__write_to = tempfile.mktemp()
  18.         self._GroupBorders__wrap = wrap
  19.  
  20.     
  21.     def __initiate_values(self):
  22.         self._GroupBorders__state = 'default'
  23.         self._GroupBorders__left_indent = 0
  24.         self._GroupBorders__border_num = 0
  25.         self._GroupBorders__list_type = 'not-defined'
  26.         self._GroupBorders__pard_def = ''
  27.         self._GroupBorders__all_lists = []
  28.         self._GroupBorders__list_chunk = ''
  29.         self._GroupBorders__state_dict = {
  30.             'default': self._GroupBorders__default_func,
  31.             'in_pard': self._GroupBorders__in_pard_func,
  32.             'after_pard': self._GroupBorders__after_pard_func }
  33.         self._GroupBorders__end_list = [
  34.             'mi<mk<sect-close',
  35.             'mi<mk<sect-start',
  36.             'mi<mk<tabl-start',
  37.             'mi<mk<fldbk-end_',
  38.             'mi<mk<fldbkstart',
  39.             'mi<mk<close_cell',
  40.             'mi<tg<item_end__',
  41.             'mi<mk<foot___clo',
  42.             'mi<mk<footnt-ope',
  43.             'mi<mk<header-beg',
  44.             'mi<mk<header-end',
  45.             'mi<mk<head___clo',
  46.             'mi<tg<item_end__',
  47.             'mi<tg<item_end__',
  48.             'mi<mk<list_startmi<mk<style-grp_',
  49.             'mi<mk<style_grp_',
  50.             'mi<mk<style_gend',
  51.             'mi<mk<stylegend_']
  52.         self._GroupBorders__name_regex = re.compile('(<name>[^<]+)')
  53.         self._GroupBorders__border_regex = re.compile('border-paragraph')
  54.         self._GroupBorders__found_appt = 0
  55.         self._GroupBorders__line_num = 0
  56.         self._GroupBorders__border_regex = re.compile('(<border-paragraph[^<]+|<border-for-every-paragraph[^<]+)')
  57.         self._GroupBorders__last_border_string = ''
  58.  
  59.     
  60.     def __in_pard_func(self, line):
  61.         if self._GroupBorders__token_info == 'mi<tg<close_____' and line[17:-1] == 'paragraph-definition':
  62.             self._GroupBorders__state = 'after_pard'
  63.         else:
  64.             self._GroupBorders__write_obj.write(line)
  65.  
  66.     
  67.     def __after_pard_func(self, line):
  68.         if self._GroupBorders__token_info == 'mi<tg<open-att__' and line[17:37] == 'paragraph-definition':
  69.             self._GroupBorders__pard_after_par_def_func(line)
  70.         elif self._GroupBorders__token_info == 'mi<tg<close_____' and line[17:-1] == 'paragraph-definition':
  71.             sys.stderr.write('Wrong flag in __after_pard_func\n')
  72.             if self._GroupBorders__run_level > 2:
  73.                 msg = 'wrong flag'
  74.                 raise self._GroupBorders__bug_handler, msg
  75.             self._GroupBorders__run_level > 2
  76.         elif self._GroupBorders__token_info in self._GroupBorders__end_list:
  77.             self._GroupBorders__write_obj.write('mi<tg<close_____<paragraph-definition\n')
  78.             self._GroupBorders__write_end_border_tag()
  79.             self._GroupBorders__write_obj.write(self._GroupBorders__list_chunk)
  80.             self._GroupBorders__list_chunk = ''
  81.             self._GroupBorders__state = 'default'
  82.             self._GroupBorders__write_obj.write(line)
  83.         else:
  84.             self._GroupBorders__list_chunk += line
  85.  
  86.     
  87.     def __close_pard_(self, line):
  88.         self._GroupBorders__write_obj.write(self._GroupBorders__list_chunk)
  89.         self._GroupBorders__write_obj.write('mi<tg<close_____<paragraph-definition\n')
  90.         self._GroupBorders__write_end_wrap()
  91.         self._GroupBorders__list_chunk = ''
  92.         self._GroupBorders__state = 'default'
  93.  
  94.     
  95.     def __pard_after_par_def_func(self, line):
  96.         is_border = self._GroupBorders__is_border_func(line)
  97.         if not is_border:
  98.             self._GroupBorders__write_obj.write('mi<tg<close_____<paragraph-definition\n')
  99.             self._GroupBorders__write_end_border_tag()
  100.             self._GroupBorders__write_obj.write(self._GroupBorders__list_chunk)
  101.             self._GroupBorders__write_obj.write(line)
  102.             self._GroupBorders__state = 'default'
  103.             self._GroupBorders__list_chunk = ''
  104.         else:
  105.             (border_string, pard_string) = self._GroupBorders__parse_pard_with_border(line)
  106.             if self._GroupBorders__last_border_string == border_string:
  107.                 self._GroupBorders__write_obj.write('mi<tg<close_____<paragraph-definition\n')
  108.                 self._GroupBorders__write_obj.write(self._GroupBorders__list_chunk)
  109.                 self._GroupBorders__list_chunk = ''
  110.                 self._GroupBorders__state = 'in_pard'
  111.                 self._GroupBorders__write_obj.write(pard_string)
  112.             else:
  113.                 self._GroupBorders__write_obj.write('mi<tg<close_____<paragraph-definition\n')
  114.                 self._GroupBorders__write_end_border_tag()
  115.                 self._GroupBorders__write_obj.write(self._GroupBorders__list_chunk)
  116.                 self._GroupBorders__write_start_border_tag(border_string)
  117.                 self._GroupBorders__write_obj.write(pard_string)
  118.                 self._GroupBorders__state = 'in_pard'
  119.                 self._GroupBorders__last_border_string = border_string
  120.                 self._GroupBorders__list_chunk = ''
  121.  
  122.     
  123.     def __default_func(self, line):
  124.         if self._GroupBorders__token_info == 'mi<tg<open-att__' and line[17:37] == 'paragraph-definition':
  125.             contains_border = self._GroupBorders__is_border_func(line)
  126.             if contains_border:
  127.                 (border_string, pard_string) = self._GroupBorders__parse_pard_with_border(line)
  128.                 self._GroupBorders__write_start_border_tag(border_string)
  129.                 self._GroupBorders__write_obj.write(pard_string)
  130.                 self._GroupBorders__last_border_string = border_string
  131.                 self._GroupBorders__state = 'in_pard'
  132.             else:
  133.                 self._GroupBorders__write_obj.write(line)
  134.         else:
  135.             self._GroupBorders__write_obj.write(line)
  136.  
  137.     
  138.     def __write_start_border_tag(self, the_string):
  139.         self._GroupBorders__write_obj.write('mi<mk<start-brdg\n')
  140.         self._GroupBorders__border_num += 1
  141.         num = '%04d' % self._GroupBorders__border_num
  142.         num_string = 's%s' % num
  143.         the_string += '<num>%s' % num_string
  144.         self._GroupBorders__write_obj.write('mi<tg<open-att__<border-group%s\n' % the_string)
  145.  
  146.     
  147.     def __write_end_border_tag(self):
  148.         self._GroupBorders__write_obj.write('mi<mk<end-brdg__\n')
  149.         self._GroupBorders__write_obj.write('mi<tg<close_____<border-group\n')
  150.  
  151.     
  152.     def __is_border_func(self, line):
  153.         line = re.sub(self._GroupBorders__name_regex, '', line)
  154.         index = line.find('border-paragraph')
  155.         if index > -1:
  156.             return 1
  157.         return 0
  158.  
  159.     
  160.     def __parse_pard_with_border(self, line):
  161.         border_string = ''
  162.         pard_string = ''
  163.         tokens = re.split(self._GroupBorders__border_regex, line)
  164.         for token in tokens:
  165.             if token[0:17] == '<border-paragraph':
  166.                 border_string += token
  167.                 continue
  168.             pard_string += token
  169.         
  170.         return (border_string, pard_string)
  171.  
  172.     
  173.     def __write_pard_with_border(self, line):
  174.         border_string = ''
  175.         pard_string = ''
  176.         tokens = re.split(self._GroupBorders__border_regex, line)
  177.         for token in tokens:
  178.             if token[0:17] == '<border-paragraph':
  179.                 border_string += token
  180.                 continue
  181.             pard_string += token
  182.         
  183.         self._GroupBorders__write_start_border_tag(border_string)
  184.         self._GroupBorders__write_obj.write(pard_string)
  185.  
  186.     
  187.     def __get_style_name(self, line):
  188.         if self._GroupBorders__token_info == 'mi<mk<style-name':
  189.             self._GroupBorders__style_name = line[17:-1]
  190.         
  191.  
  192.     
  193.     def group_borders(self):
  194.         self._GroupBorders__initiate_values()
  195.         read_obj = open(self._GroupBorders__file, 'r')
  196.         self._GroupBorders__write_obj = open(self._GroupBorders__write_to, 'w')
  197.         line_to_read = 1
  198.         while line_to_read:
  199.             line_to_read = read_obj.readline()
  200.             line = line_to_read
  201.             self._GroupBorders__token_info = line[:16]
  202.             self._GroupBorders__get_style_name(line)
  203.             action = self._GroupBorders__state_dict.get(self._GroupBorders__state)
  204.             action(line)
  205.         read_obj.close()
  206.         self._GroupBorders__write_obj.close()
  207.         copy_obj = copy.Copy(bug_handler = self._GroupBorders__bug_handler)
  208.         if self._GroupBorders__copy:
  209.             copy_obj.copy_file(self._GroupBorders__write_to, 'group_borders.data')
  210.         
  211.         copy_obj.rename(self._GroupBorders__write_to, self._GroupBorders__file)
  212.         os.remove(self._GroupBorders__write_to)
  213.  
  214.  
  215.