home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyc (Python 2.6)
-
- import os
- import tempfile
- from calibre.ebooks.rtf2xml import copy
- public_dtd = 'rtf2xml1.0.dtd'
-
- class ConvertToTags:
-
- def __init__(self, in_file, bug_handler, dtd_path, no_dtd, indent = None, copy = None, run_level = 1):
- self._ConvertToTags__file = in_file
- self._ConvertToTags__bug_handler = bug_handler
- self._ConvertToTags__copy = copy
- self._ConvertToTags__dtd_path = dtd_path
- self._ConvertToTags__no_dtd = no_dtd
- self._ConvertToTags__indent = indent
- self._ConvertToTags__run_level = run_level
- self._ConvertToTags__write_to = tempfile.mktemp()
-
-
- def __initiate_values(self):
- self._ConvertToTags__state = 'default'
- self._ConvertToTags__new_line = 0
- 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')
- self._ConvertToTags__two_new_line = ('section', 'body', 'table', 'rowlist-table')
- self._ConvertToTags__state_dict = {
- 'default': self._ConvertToTags__default_func,
- 'mi<tg<open______': self._ConvertToTags__open_func,
- 'mi<tg<close_____': self._ConvertToTags__close_func,
- 'mi<tg<open-att__': self._ConvertToTags__open_att_func,
- 'mi<tg<empty-att_': self._ConvertToTags__empty_att_func,
- 'tx<nu<__________': self._ConvertToTags__text_func,
- 'tx<ut<__________': self._ConvertToTags__text_func,
- 'mi<tg<empty_____': self._ConvertToTags__empty_func }
-
-
- def __open_func(self, line):
- info = line[17:-1]
- self._ConvertToTags__new_line = 0
- if info in self._ConvertToTags__block:
- self._ConvertToTags__write_new_line()
-
- if info in self._ConvertToTags__two_new_line:
- self._ConvertToTags__write_extra_new_line()
-
- self._ConvertToTags__write_obj.write('<%s>' % info)
-
-
- def __empty_func(self, line):
- info = line[17:-1]
- self._ConvertToTags__write_obj.write('<%s/>' % info)
- self._ConvertToTags__new_line = 0
- if info in self._ConvertToTags__block:
- self._ConvertToTags__write_new_line()
-
- if info in self._ConvertToTags__two_new_line:
- self._ConvertToTags__write_extra_new_line()
-
-
-
- def __open_att_func(self, line):
- info = line[17:-1]
- tokens = info.split('<')
- element_name = tokens[0]
- tokens = tokens[1:]
- self._ConvertToTags__write_obj.write('<%s' % element_name)
- for token in tokens:
- groups = token.split('>')
-
- try:
- val = groups[0]
- att = groups[1]
- att = att.replace('"', '"')
- att = att.replace("'", '"')
- self._ConvertToTags__write_obj.write(' %s="%s"' % (val, att))
- continue
- if self._ConvertToTags__run_level > 3:
- msg = 'index out of range\n'
- raise self._ConvertToTags__bug_handler, msg
- self._ConvertToTags__run_level > 3
- continue
-
-
- self._ConvertToTags__write_obj.write('>')
- self._ConvertToTags__new_line = 0
- if element_name in self._ConvertToTags__block:
- self._ConvertToTags__write_new_line()
-
- if element_name in self._ConvertToTags__two_new_line:
- self._ConvertToTags__write_extra_new_line()
-
-
-
- def __empty_att_func(self, line):
- info = line[17:-1]
- tokens = info.split('<')
- element_name = tokens[0]
- tokens = tokens[1:]
- self._ConvertToTags__write_obj.write('<%s' % element_name)
- for token in tokens:
- groups = token.split('>')
- val = groups[0]
- att = groups[1]
- att = att.replace('"', '"')
- att = att.replace("'", '"')
- self._ConvertToTags__write_obj.write(' %s="%s"' % (val, att))
-
- self._ConvertToTags__write_obj.write('/>')
- self._ConvertToTags__new_line = 0
- if element_name in self._ConvertToTags__block:
- self._ConvertToTags__write_new_line()
-
- if element_name in self._ConvertToTags__two_new_line:
- self._ConvertToTags__write_extra_new_line()
-
-
-
- def __close_func(self, line):
- info = line[17:-1]
- self._ConvertToTags__write_obj.write('</%s>' % info)
- self._ConvertToTags__new_line = 0
- if info in self._ConvertToTags__block:
- self._ConvertToTags__write_new_line()
-
- if info in self._ConvertToTags__two_new_line:
- self._ConvertToTags__write_extra_new_line()
-
-
-
- def __text_func(self, line):
- self._ConvertToTags__write_obj.write(line[17:-1])
-
-
- def __write_extra_new_line(self):
- if not self._ConvertToTags__indent:
- return None
- if self._ConvertToTags__new_line < 2:
- self._ConvertToTags__write_obj.write('\n')
-
-
-
- def __default_func(self, line):
- pass
-
-
- def __write_new_line(self):
- if not self._ConvertToTags__indent:
- return None
-
-
- def __write_dec(self):
- self._ConvertToTags__write_obj.write('<?xml version="1.0" encoding="US-ASCII" ?>')
- self._ConvertToTags__new_line = 0
- self._ConvertToTags__write_new_line()
- if self._ConvertToTags__no_dtd:
- pass
- elif self._ConvertToTags__dtd_path:
- self._ConvertToTags__write_obj.write('<!DOCTYPE doc SYSTEM "%s">' % self._ConvertToTags__dtd_path)
- elif self._ConvertToTags__dtd_path == '':
- pass
- else:
- self._ConvertToTags__write_obj.write('<!DOCTYPE doc PUBLIC "publicID" "http://rtf2xml.sourceforge.net/dtd/%s">' % public_dtd)
- self._ConvertToTags__new_line = 0
- self._ConvertToTags__write_new_line()
-
-
- def convert_to_tags(self):
- self._ConvertToTags__initiate_values()
- read_obj = open(self._ConvertToTags__file, 'r')
- self._ConvertToTags__write_obj = open(self._ConvertToTags__write_to, 'w')
- self._ConvertToTags__write_dec()
- line_to_read = 1
- while line_to_read:
- line_to_read = read_obj.readline()
- line = line_to_read
- self._ConvertToTags__token_info = line[:16]
- action = self._ConvertToTags__state_dict.get(self._ConvertToTags__token_info)
- if action != None:
- action(line)
- continue
- read_obj.close()
- self._ConvertToTags__write_obj.close()
- copy_obj = copy.Copy(bug_handler = self._ConvertToTags__bug_handler)
- if self._ConvertToTags__copy:
- copy_obj.copy_file(self._ConvertToTags__write_to, 'convert_to_tags.data')
-
- copy_obj.rename(self._ConvertToTags__write_to, self._ConvertToTags__file)
- os.remove(self._ConvertToTags__write_to)
-
-
-