home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyc (Python 2.6)
-
- import sys
- import os
- import tempfile
- from calibre.ebooks.rtf2xml import copy, override_table, list_table
-
- class PreambleDiv:
-
- def __init__(self, in_file, bug_handler, copy = None, no_namespace = None, run_level = 1):
- self._PreambleDiv__file = in_file
- self._PreambleDiv__bug_handler = bug_handler
- self._PreambleDiv__copy = copy
- self._PreambleDiv__no_namespace = no_namespace
- self._PreambleDiv__write_to = tempfile.mktemp()
- self._PreambleDiv__run_level = run_level
-
-
- def __initiate_values(self):
- self._PreambleDiv__all_lists = { }
- self._PreambleDiv__page = {
- 'margin-top': 72,
- 'margin-bottom': 72,
- 'margin-left': 90,
- 'margin-right': 90,
- 'gutter': 0 }
- self._PreambleDiv__cb_count = ''
- self._PreambleDiv__ob_count = ''
- self._PreambleDiv__state = 'preamble'
- self._PreambleDiv__rtf_final = ''
- self._PreambleDiv__close_group_count = ''
- self._PreambleDiv__found_font_table = 0
- self._PreambleDiv__list_table_final = ''
- self._PreambleDiv__override_table_final = ''
- self._PreambleDiv__revision_table_final = ''
- self._PreambleDiv__doc_info_table_final = ''
- self._PreambleDiv__state_dict = {
- 'default': self._PreambleDiv__default_func,
- 'rtf_header': self._PreambleDiv__rtf_head_func,
- 'preamble': self._PreambleDiv__preamble_func,
- 'font_table': self._PreambleDiv__font_table_func,
- 'color_table': self._PreambleDiv__color_table_func,
- 'style_sheet': self._PreambleDiv__style_sheet_func,
- 'list_table': self._PreambleDiv__list_table_func,
- 'override_table': self._PreambleDiv__override_table_func,
- 'revision_table': self._PreambleDiv__revision_table_func,
- 'doc_info': self._PreambleDiv__doc_info_func,
- 'body': self._PreambleDiv__body_func,
- 'ignore': self._PreambleDiv__ignore_func,
- 'cw<ri<rtf_______': self._PreambleDiv__found_rtf_head_func,
- 'cw<pf<par-def___': self._PreambleDiv__para_def_func,
- 'tx<nu<__________': self._PreambleDiv__text_func,
- 'cw<tb<row-def___': self._PreambleDiv__row_def_func,
- 'cw<sc<section___': self._PreambleDiv__new_section_func,
- 'cw<sc<sect-defin': self._PreambleDiv__new_section_func,
- 'cw<it<font-table': self._PreambleDiv__found_font_table_func,
- 'cw<it<colr-table': self._PreambleDiv__found_color_table_func,
- 'cw<ss<style-shet': self._PreambleDiv__found_style_sheet_func,
- 'cw<it<listtable_': self._PreambleDiv__found_list_table_func,
- 'cw<it<lovr-table': self._PreambleDiv__found_override_table_func,
- 'cw<it<revi-table': self._PreambleDiv__found_revision_table_func,
- 'cw<di<doc-info__': self._PreambleDiv__found_doc_info_func,
- 'cw<pa<margin-lef': self._PreambleDiv__margin_func,
- 'cw<pa<margin-rig': self._PreambleDiv__margin_func,
- 'cw<pa<margin-top': self._PreambleDiv__margin_func,
- 'cw<pa<margin-bot': self._PreambleDiv__margin_func,
- 'cw<pa<gutter____': self._PreambleDiv__margin_func,
- 'cw<pa<paper-widt': self._PreambleDiv__margin_func,
- 'cw<pa<paper-hght': self._PreambleDiv__margin_func }
- self._PreambleDiv__margin_dict = {
- 'margin-lef': 'margin-left',
- 'margin-rig': 'margin-right',
- 'margin-top': 'margin-top',
- 'margin-bot': 'margin-bottom',
- 'gutter____': 'gutter',
- 'paper-widt': 'paper-width',
- 'paper-hght': 'paper-height' }
- self._PreambleDiv__translate_sec = {
- 'columns___': 'column' }
- self._PreambleDiv__section = { }
- self._PreambleDiv__color_table_final = ''
- self._PreambleDiv__style_sheet_final = ''
- self._PreambleDiv__individual_font = 0
- self._PreambleDiv__old_font = 0
- self._PreambleDiv__ob_group = 0
- self._PreambleDiv__font_table_final = 0
- self._PreambleDiv__list_table_obj = list_table.ListTable(run_level = self._PreambleDiv__run_level, bug_handler = self._PreambleDiv__bug_handler)
-
-
- def __ignore_func(self, line):
- if self._PreambleDiv__ignore_num == self._PreambleDiv__cb_count:
- self._PreambleDiv__state = self._PreambleDiv__previous_state
-
-
-
- def __found_rtf_head_func(self, line):
- self._PreambleDiv__state = 'rtf_header'
-
-
- def __rtf_head_func(self, line):
- if self._PreambleDiv__ob_count == '0002':
- self._PreambleDiv__rtf_final = 'mi<mk<rtfhed-beg\n' + self._PreambleDiv__rtf_final + 'mi<mk<rtfhed-end\n'
- self._PreambleDiv__state = 'preamble'
- elif self._PreambleDiv__token_info == 'tx<nu<__________' or self._PreambleDiv__token_info == 'cw<pf<par-def___':
- self._PreambleDiv__state = 'body'
- self._PreambleDiv__rtf_final = 'mi<mk<rtfhed-beg\n' + self._PreambleDiv__rtf_final + 'mi<mk<rtfhed-end\n'
- self._PreambleDiv__make_default_font_table()
- self._PreambleDiv__write_preamble()
- self._PreambleDiv__write_obj.write(line)
- else:
- self._PreambleDiv__rtf_final = self._PreambleDiv__rtf_final + line
-
-
- def __make_default_font_table(self):
- self._PreambleDiv__font_table_final = 'mi<tg<open______<font-table\n'
- self._PreambleDiv__font_table_final += 'mi<mk<fonttb-beg\n'
- self._PreambleDiv__font_table_final += 'mi<mk<fontit-beg\n'
- self._PreambleDiv__font_table_final += 'cw<ci<font-style<nu<0\n'
- self._PreambleDiv__font_table_final += 'tx<nu<__________<Times;\n'
- self._PreambleDiv__font_table_final += 'mi<mk<fontit-end\n'
- self._PreambleDiv__font_table_final += 'mi<mk<fonttb-end\n'
- self._PreambleDiv__font_table_final += 'mi<tg<close_____<font-table\n'
-
-
- def __make_default_color_table(self):
- self._PreambleDiv__color_table_final = 'mi<tg<open______<color-table\n'
- self._PreambleDiv__color_table_final += 'mi<mk<clrtbl-beg\n'
- self._PreambleDiv__color_table_final += 'cw<ci<red_______<nu<00\n'
- self._PreambleDiv__color_table_final += 'cw<ci<green_____<nu<00\n'
- self._PreambleDiv__color_table_final += 'cw<ci<blue______<en<00\n'
- self._PreambleDiv__color_table_final += 'mi<mk<clrtbl-end\n'
- self._PreambleDiv__color_table_final += 'mi<tg<close_____<color-table\n'
-
-
- def __make_default_style_table(self):
- self._PreambleDiv__style_sheet_final = 'mi<tg<open______<style-table\nmi<mk<styles-beg\nmi<mk<stylei-beg\ncw<ci<font-style<nu<0\ntx<nu<__________<Normal;\nmi<mk<stylei-end\nmi<mk<stylei-beg\ncw<ss<char-style<nu<0\ntx<nu<__________<Default Paragraph Font;\nmi<mk<stylei-end\nmi<mk<styles-end\nmi<tg<close_____<style-table\n'
-
-
- def __found_font_table_func(self, line):
- if self._PreambleDiv__found_font_table:
- self._PreambleDiv__state = 'ignore'
- else:
- self._PreambleDiv__state = 'font_table'
- self._PreambleDiv__font_table_final = ''
- self._PreambleDiv__close_group_count = self._PreambleDiv__ob_count
- self._PreambleDiv__cb_count = 0
- self._PreambleDiv__found_font_table = 1
-
-
- def __font_table_func(self, line):
- if self._PreambleDiv__cb_count == self._PreambleDiv__close_group_count:
- self._PreambleDiv__state = 'preamble'
- self._PreambleDiv__font_table_final = 'mi<tg<open______<font-table\n' + 'mi<mk<fonttb-beg\n' + self._PreambleDiv__font_table_final
- self._PreambleDiv__font_table_final += 'mi<mk<fonttb-end\n' + 'mi<tg<close_____<font-table\n'
- elif self._PreambleDiv__token_info == 'ob<nu<open-brack':
- if int(self._PreambleDiv__ob_count) == int(self._PreambleDiv__close_group_count) + 1:
- self._PreambleDiv__font_table_final += 'mi<mk<fontit-beg\n'
- self._PreambleDiv__individual_font = 1
- else:
- self._PreambleDiv__previous_state = 'font_table'
- self._PreambleDiv__state = 'ignore'
- self._PreambleDiv__ignore_num = self._PreambleDiv__ob_count
- elif self._PreambleDiv__token_info == 'cb<nu<clos-brack':
- if int(self._PreambleDiv__cb_count) == int(self._PreambleDiv__close_group_count) + 1:
- self._PreambleDiv__individual_font = 0
- self._PreambleDiv__font_table_final += 'mi<mk<fontit-end\n'
-
- elif self._PreambleDiv__individual_font:
- if self._PreambleDiv__old_font and self._PreambleDiv__token_info == 'tx<nu<__________':
- if ';' in line:
- self._PreambleDiv__font_table_final += line
- self._PreambleDiv__font_table_final += 'mi<mk<fontit-end\n'
- self._PreambleDiv__individual_font = 0
-
- else:
- self._PreambleDiv__font_table_final += line
- elif self._PreambleDiv__token_info == 'cw<ci<font-style':
- self._PreambleDiv__old_font = 1
- self._PreambleDiv__individual_font = 1
- self._PreambleDiv__font_table_final += 'mi<mk<fontit-beg\n'
- self._PreambleDiv__font_table_final += line
-
-
-
- def __old_font_func(self, line):
- pass
-
-
- def __found_color_table_func(self, line):
- self._PreambleDiv__state = 'color_table'
- self._PreambleDiv__color_table_final = ''
- self._PreambleDiv__close_group_count = self._PreambleDiv__ob_count
- self._PreambleDiv__cb_count = 0
-
-
- def __color_table_func(self, line):
- pass
-
-
- def __found_style_sheet_func(self, line):
- self._PreambleDiv__state = 'style_sheet'
- self._PreambleDiv__style_sheet_final = ''
- self._PreambleDiv__close_group_count = self._PreambleDiv__ob_count
- self._PreambleDiv__cb_count = 0
-
-
- def __style_sheet_func(self, line):
- if self._PreambleDiv__cb_count == self._PreambleDiv__close_group_count:
- self._PreambleDiv__state = 'preamble'
- self._PreambleDiv__style_sheet_final = 'mi<tg<open______<style-table\n' + 'mi<mk<styles-beg\n' + self._PreambleDiv__style_sheet_final
- self._PreambleDiv__style_sheet_final += 'mi<mk<styles-end\n' + 'mi<tg<close_____<style-table\n'
- elif self._PreambleDiv__token_info == 'ob<nu<open-brack':
- if int(self._PreambleDiv__ob_count) == int(self._PreambleDiv__close_group_count) + 1:
- self._PreambleDiv__style_sheet_final += 'mi<mk<stylei-beg\n'
-
- elif self._PreambleDiv__token_info == 'cb<nu<clos-brack':
- if int(self._PreambleDiv__cb_count) == int(self._PreambleDiv__close_group_count) + 1:
- self._PreambleDiv__style_sheet_final += 'mi<mk<stylei-end\n'
-
- else:
- self._PreambleDiv__style_sheet_final += line
-
-
- def __found_list_table_func(self, line):
- self._PreambleDiv__state = 'list_table'
- self._PreambleDiv__list_table_final = ''
- self._PreambleDiv__close_group_count = self._PreambleDiv__ob_count
- self._PreambleDiv__cb_count = 0
-
-
- def __list_table_func(self, line):
- if self._PreambleDiv__cb_count == self._PreambleDiv__close_group_count:
- self._PreambleDiv__state = 'preamble'
- (self._PreambleDiv__list_table_final, self._PreambleDiv__all_lists) = self._PreambleDiv__list_table_obj.parse_list_table(self._PreambleDiv__list_table_final)
- elif self._PreambleDiv__token_info == '':
- pass
- else:
- self._PreambleDiv__list_table_final += line
-
-
- def __found_override_table_func(self, line):
- self._PreambleDiv__override_table_obj = override_table.OverrideTable(run_level = self._PreambleDiv__run_level, list_of_lists = self._PreambleDiv__all_lists)
- self._PreambleDiv__state = 'override_table'
- self._PreambleDiv__override_table_final = ''
- self._PreambleDiv__close_group_count = self._PreambleDiv__ob_count
- self._PreambleDiv__cb_count = 0
-
-
- def __override_table_func(self, line):
- if self._PreambleDiv__cb_count == self._PreambleDiv__close_group_count:
- self._PreambleDiv__state = 'preamble'
- (self._PreambleDiv__override_table_final, self._PreambleDiv__all_lists) = self._PreambleDiv__override_table_obj.parse_override_table(self._PreambleDiv__override_table_final)
- elif self._PreambleDiv__token_info == '':
- pass
- else:
- self._PreambleDiv__override_table_final += line
-
-
- def __found_revision_table_func(self, line):
- self._PreambleDiv__state = 'revision_table'
- self._PreambleDiv__revision_table_final = ''
- self._PreambleDiv__close_group_count = self._PreambleDiv__ob_count
- self._PreambleDiv__cb_count = 0
-
-
- def __revision_table_func(self, line):
- pass
-
-
- def __found_doc_info_func(self, line):
- self._PreambleDiv__state = 'doc_info'
- self._PreambleDiv__doc_info_table_final = ''
- self._PreambleDiv__close_group_count = self._PreambleDiv__ob_count
- self._PreambleDiv__cb_count = 0
-
-
- def __doc_info_func(self, line):
- if self._PreambleDiv__cb_count == self._PreambleDiv__close_group_count:
- self._PreambleDiv__state = 'preamble'
- self._PreambleDiv__doc_info_table_final = 'mi<tg<open______<doc-information\n' + 'mi<mk<doc-in-beg\n' + self._PreambleDiv__doc_info_table_final
- self._PreambleDiv__doc_info_table_final += 'mi<mk<doc-in-end\n' + 'mi<tg<close_____<doc-information\n'
- elif self._PreambleDiv__token_info == 'ob<nu<open-brack':
- if int(self._PreambleDiv__ob_count) == int(self._PreambleDiv__close_group_count) + 1:
- self._PreambleDiv__doc_info_table_final += 'mi<mk<docinf-beg\n'
-
- elif self._PreambleDiv__token_info == 'cb<nu<clos-brack':
- if int(self._PreambleDiv__cb_count) == int(self._PreambleDiv__close_group_count) + 1:
- self._PreambleDiv__doc_info_table_final += 'mi<mk<docinf-end\n'
-
- else:
- self._PreambleDiv__doc_info_table_final += line
-
-
- def __margin_func(self, line):
- info = line[6:16]
- changed = self._PreambleDiv__margin_dict.get(info)
- if changed == None:
- print 'woops!'
- else:
- self._PreambleDiv__page[changed] = line[20:-1]
-
-
- def __print_page_info(self):
- self._PreambleDiv__write_obj.write('mi<tg<empty-att_<page-definition')
- for key in self._PreambleDiv__page.keys():
- self._PreambleDiv__write_obj.write('<%s>%s' % (key, self._PreambleDiv__page[key]))
-
- self._PreambleDiv__write_obj.write('\n')
-
-
- def __print_sec_info(self):
- if len(self._PreambleDiv__section.keys()) == 0:
- self._PreambleDiv__write_obj.write('mi<tg<open______<section-definition\n')
- else:
- self._PreambleDiv__write_obj.write('mi<tg<open-att__<section-definition')
- keys = self._PreambleDiv__section.keys()
- for key in keys:
- self._PreambleDiv__write_obj.write('<%s>%s' % (key, self._PreambleDiv__section[key]))
-
- self._PreambleDiv__write_obj.write('\n')
-
-
- def __section_func(self, line):
- info = self._PreambleDiv__translate_sec.get(line[6:16])
- if info == None:
- sys.stderr.write('woops!\n')
- else:
- self._PreambleDiv__section[info] = 'true'
-
-
- def __body_func(self, line):
- self._PreambleDiv__write_obj.write(line)
-
-
- def __default_func(self, line):
- pass
-
-
- def __para_def_func(self, line):
- if self._PreambleDiv__cb_count == '0002':
- self._PreambleDiv__state = 'body'
- self._PreambleDiv__write_preamble()
-
- self._PreambleDiv__write_obj.write(line)
-
-
- def __text_func(self, line):
- if self._PreambleDiv__cb_count == '':
- cb_count = '0002'
- else:
- cb_count = self._PreambleDiv__cb_count
- if cb_count == '0002':
- self._PreambleDiv__state = 'body'
- self._PreambleDiv__write_preamble()
-
- self._PreambleDiv__write_obj.write(line)
-
-
- def __row_def_func(self, line):
- if self._PreambleDiv__cb_count == '0002':
- self._PreambleDiv__state = 'body'
- self._PreambleDiv__write_preamble()
-
- self._PreambleDiv__write_obj.write(line)
-
-
- def __new_section_func(self, line):
- if self._PreambleDiv__cb_count == '0002':
- self._PreambleDiv__state = 'body'
- self._PreambleDiv__write_preamble()
- else:
- sys.stderr.write('module is preamble_div\n')
- sys.stderr.write('method is __new_section_func\n')
- sys.stderr.write('bracket count should be 2?\n')
- self._PreambleDiv__write_obj.write(line)
-
-
- def __write_preamble(self):
- if self._PreambleDiv__no_namespace:
- self._PreambleDiv__write_obj.write('mi<tg<open______<doc\n')
- else:
- self._PreambleDiv__write_obj.write('mi<tg<open-att__<doc<xmlns>http://rtf2xml.sourceforge.net/\n')
- self._PreambleDiv__write_obj.write('mi<tg<open______<preamble\n')
- self._PreambleDiv__write_obj.write(self._PreambleDiv__rtf_final)
- if not self._PreambleDiv__color_table_final:
- self._PreambleDiv__make_default_color_table()
-
- if not self._PreambleDiv__font_table_final:
- self._PreambleDiv__make_default_font_table()
-
- self._PreambleDiv__write_obj.write(self._PreambleDiv__font_table_final)
- self._PreambleDiv__write_obj.write(self._PreambleDiv__color_table_final)
- if not self._PreambleDiv__style_sheet_final:
- self._PreambleDiv__make_default_style_table()
-
- self._PreambleDiv__write_obj.write(self._PreambleDiv__style_sheet_final)
- self._PreambleDiv__write_obj.write(self._PreambleDiv__list_table_final)
- self._PreambleDiv__write_obj.write(self._PreambleDiv__override_table_final)
- self._PreambleDiv__write_obj.write(self._PreambleDiv__revision_table_final)
- self._PreambleDiv__write_obj.write(self._PreambleDiv__doc_info_table_final)
- self._PreambleDiv__print_page_info()
- self._PreambleDiv__write_obj.write('ob<nu<open-brack<0001\n')
- self._PreambleDiv__write_obj.write('ob<nu<open-brack<0002\n')
- self._PreambleDiv__write_obj.write('cb<nu<clos-brack<0002\n')
- self._PreambleDiv__write_obj.write('mi<tg<close_____<preamble\n')
- self._PreambleDiv__write_obj.write('mi<tg<open______<body\n')
- self._PreambleDiv__write_obj.write('mi<mk<body-open_\n')
-
-
- def __preamble_func(self, line):
- action = self._PreambleDiv__state_dict.get(self._PreambleDiv__token_info)
- if action:
- action(line)
-
-
-
- def make_preamble_divisions(self):
- self._PreambleDiv__initiate_values()
- read_obj = open(self._PreambleDiv__file, 'r')
- self._PreambleDiv__write_obj = open(self._PreambleDiv__write_to, 'w')
- line_to_read = 1
- while line_to_read:
- line_to_read = read_obj.readline()
- line = line_to_read
- self._PreambleDiv__token_info = line[:16]
- if self._PreambleDiv__token_info == 'ob<nu<open-brack':
- self._PreambleDiv__ob_count = line[-5:-1]
- self._PreambleDiv__ob_group += 1
-
- if self._PreambleDiv__token_info == 'cb<nu<clos-brack':
- self._PreambleDiv__cb_count = line[-5:-1]
- self._PreambleDiv__ob_group -= 1
-
- action = self._PreambleDiv__state_dict.get(self._PreambleDiv__state)
- if action == None:
- print self._PreambleDiv__state
-
- action(line)
- read_obj.close()
- self._PreambleDiv__write_obj.close()
- copy_obj = copy.Copy(bug_handler = self._PreambleDiv__bug_handler)
- if self._PreambleDiv__copy:
- copy_obj.copy_file(self._PreambleDiv__write_to, 'preamble_div.data')
-
- copy_obj.rename(self._PreambleDiv__write_to, self._PreambleDiv__file)
- os.remove(self._PreambleDiv__write_to)
- return self._PreambleDiv__all_lists
-
-
-