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

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. import os
  5. import tempfile
  6. from calibre.ebooks.rtf2xml import copy
  7. public_dtd = 'rtf2xml1.0.dtd'
  8.  
  9. class ConvertToTags:
  10.     
  11.     def __init__(self, in_file, bug_handler, dtd_path, no_dtd, indent = None, copy = None, run_level = 1):
  12.         self._ConvertToTags__file = in_file
  13.         self._ConvertToTags__bug_handler = bug_handler
  14.         self._ConvertToTags__copy = copy
  15.         self._ConvertToTags__dtd_path = dtd_path
  16.         self._ConvertToTags__no_dtd = no_dtd
  17.         self._ConvertToTags__indent = indent
  18.         self._ConvertToTags__run_level = run_level
  19.         self._ConvertToTags__write_to = tempfile.mktemp()
  20.  
  21.     
  22.     def __initiate_values(self):
  23.         self._ConvertToTags__state = 'default'
  24.         self._ConvertToTags__new_line = 0
  25.         self._ConvertToTags__block = ('doc', 'preamble', 'rtf-definition', 'font-table', 'font-in-table', 'color-table', 'color-in-table', 'style-sheet', 'paragraph-styles', 'paragraph-style-in-table', 'character-styles', 'character-style-in-table', 'list-table', 'doc-information', 'title', 'author', 'operator', 'creation-time', 'revision-time', 'editing-time', 'time', 'number-of-pages', 'number-of-words', 'number-of-characters', 'page-definition', 'section-definition', 'headers-and-footers', 'section', 'para', 'body', 'paragraph-definition', 'cell', 'row', 'table', 'revision-table', 'style-group', 'border-group', 'styles-in-body', 'paragraph-style-in-body', 'list-in-table', 'level-in-table', 'override-table', 'override-list')
  26.         self._ConvertToTags__two_new_line = ('section', 'body', 'table', 'rowlist-table')
  27.         self._ConvertToTags__state_dict = {
  28.             'default': self._ConvertToTags__default_func,
  29.             'mi<tg<open______': self._ConvertToTags__open_func,
  30.             'mi<tg<close_____': self._ConvertToTags__close_func,
  31.             'mi<tg<open-att__': self._ConvertToTags__open_att_func,
  32.             'mi<tg<empty-att_': self._ConvertToTags__empty_att_func,
  33.             'tx<nu<__________': self._ConvertToTags__text_func,
  34.             'tx<ut<__________': self._ConvertToTags__text_func,
  35.             'mi<tg<empty_____': self._ConvertToTags__empty_func }
  36.  
  37.     
  38.     def __open_func(self, line):
  39.         info = line[17:-1]
  40.         self._ConvertToTags__new_line = 0
  41.         if info in self._ConvertToTags__block:
  42.             self._ConvertToTags__write_new_line()
  43.         
  44.         if info in self._ConvertToTags__two_new_line:
  45.             self._ConvertToTags__write_extra_new_line()
  46.         
  47.         self._ConvertToTags__write_obj.write('<%s>' % info)
  48.  
  49.     
  50.     def __empty_func(self, line):
  51.         info = line[17:-1]
  52.         self._ConvertToTags__write_obj.write('<%s/>' % info)
  53.         self._ConvertToTags__new_line = 0
  54.         if info in self._ConvertToTags__block:
  55.             self._ConvertToTags__write_new_line()
  56.         
  57.         if info in self._ConvertToTags__two_new_line:
  58.             self._ConvertToTags__write_extra_new_line()
  59.         
  60.  
  61.     
  62.     def __open_att_func(self, line):
  63.         info = line[17:-1]
  64.         tokens = info.split('<')
  65.         element_name = tokens[0]
  66.         tokens = tokens[1:]
  67.         self._ConvertToTags__write_obj.write('<%s' % element_name)
  68.         for token in tokens:
  69.             groups = token.split('>')
  70.             
  71.             try:
  72.                 val = groups[0]
  73.                 att = groups[1]
  74.                 att = att.replace('"', '"')
  75.                 att = att.replace("'", '"')
  76.                 self._ConvertToTags__write_obj.write(' %s="%s"' % (val, att))
  77.             continue
  78.             if self._ConvertToTags__run_level > 3:
  79.                 msg = 'index out of range\n'
  80.                 raise self._ConvertToTags__bug_handler, msg
  81.             self._ConvertToTags__run_level > 3
  82.             continue
  83.  
  84.         
  85.         self._ConvertToTags__write_obj.write('>')
  86.         self._ConvertToTags__new_line = 0
  87.         if element_name in self._ConvertToTags__block:
  88.             self._ConvertToTags__write_new_line()
  89.         
  90.         if element_name in self._ConvertToTags__two_new_line:
  91.             self._ConvertToTags__write_extra_new_line()
  92.         
  93.  
  94.     
  95.     def __empty_att_func(self, line):
  96.         info = line[17:-1]
  97.         tokens = info.split('<')
  98.         element_name = tokens[0]
  99.         tokens = tokens[1:]
  100.         self._ConvertToTags__write_obj.write('<%s' % element_name)
  101.         for token in tokens:
  102.             groups = token.split('>')
  103.             val = groups[0]
  104.             att = groups[1]
  105.             att = att.replace('"', '"')
  106.             att = att.replace("'", '"')
  107.             self._ConvertToTags__write_obj.write(' %s="%s"' % (val, att))
  108.         
  109.         self._ConvertToTags__write_obj.write('/>')
  110.         self._ConvertToTags__new_line = 0
  111.         if element_name in self._ConvertToTags__block:
  112.             self._ConvertToTags__write_new_line()
  113.         
  114.         if element_name in self._ConvertToTags__two_new_line:
  115.             self._ConvertToTags__write_extra_new_line()
  116.         
  117.  
  118.     
  119.     def __close_func(self, line):
  120.         info = line[17:-1]
  121.         self._ConvertToTags__write_obj.write('</%s>' % info)
  122.         self._ConvertToTags__new_line = 0
  123.         if info in self._ConvertToTags__block:
  124.             self._ConvertToTags__write_new_line()
  125.         
  126.         if info in self._ConvertToTags__two_new_line:
  127.             self._ConvertToTags__write_extra_new_line()
  128.         
  129.  
  130.     
  131.     def __text_func(self, line):
  132.         self._ConvertToTags__write_obj.write(line[17:-1])
  133.  
  134.     
  135.     def __write_extra_new_line(self):
  136.         if not self._ConvertToTags__indent:
  137.             return None
  138.         if self._ConvertToTags__new_line < 2:
  139.             self._ConvertToTags__write_obj.write('\n')
  140.         
  141.  
  142.     
  143.     def __default_func(self, line):
  144.         pass
  145.  
  146.     
  147.     def __write_new_line(self):
  148.         if not self._ConvertToTags__indent:
  149.             return None
  150.  
  151.     
  152.     def __write_dec(self):
  153.         self._ConvertToTags__write_obj.write('<?xml version="1.0" encoding="US-ASCII" ?>')
  154.         self._ConvertToTags__new_line = 0
  155.         self._ConvertToTags__write_new_line()
  156.         if self._ConvertToTags__no_dtd:
  157.             pass
  158.         elif self._ConvertToTags__dtd_path:
  159.             self._ConvertToTags__write_obj.write('<!DOCTYPE doc SYSTEM "%s">' % self._ConvertToTags__dtd_path)
  160.         elif self._ConvertToTags__dtd_path == '':
  161.             pass
  162.         else:
  163.             self._ConvertToTags__write_obj.write('<!DOCTYPE doc PUBLIC "publicID" "http://rtf2xml.sourceforge.net/dtd/%s">' % public_dtd)
  164.         self._ConvertToTags__new_line = 0
  165.         self._ConvertToTags__write_new_line()
  166.  
  167.     
  168.     def convert_to_tags(self):
  169.         self._ConvertToTags__initiate_values()
  170.         read_obj = open(self._ConvertToTags__file, 'r')
  171.         self._ConvertToTags__write_obj = open(self._ConvertToTags__write_to, 'w')
  172.         self._ConvertToTags__write_dec()
  173.         line_to_read = 1
  174.         while line_to_read:
  175.             line_to_read = read_obj.readline()
  176.             line = line_to_read
  177.             self._ConvertToTags__token_info = line[:16]
  178.             action = self._ConvertToTags__state_dict.get(self._ConvertToTags__token_info)
  179.             if action != None:
  180.                 action(line)
  181.                 continue
  182.         read_obj.close()
  183.         self._ConvertToTags__write_obj.close()
  184.         copy_obj = copy.Copy(bug_handler = self._ConvertToTags__bug_handler)
  185.         if self._ConvertToTags__copy:
  186.             copy_obj.copy_file(self._ConvertToTags__write_to, 'convert_to_tags.data')
  187.         
  188.         copy_obj.rename(self._ConvertToTags__write_to, self._ConvertToTags__file)
  189.         os.remove(self._ConvertToTags__write_to)
  190.  
  191.  
  192.