home *** CD-ROM | disk | FTP | other *** search
Wrap
# Source Generated with Decompyle++ # File: in.pyc (Python 2.6) import sys import os import tempfile from calibre.ebooks.rtf2xml import copy class Inline: def __init__(self, in_file, bug_handler, copy = None, run_level = 1): self._Inline__file = in_file self._Inline__bug_handler = bug_handler self._Inline__copy = copy self._Inline__run_level = run_level self._Inline__write_to = tempfile.mktemp() def __initiate_values(self): self._Inline__state_dict = { 'default': self._Inline__default_func, 'after_open_bracket': self._Inline__after_open_bracket_func } self._Inline__default_dict = { 'ob<nu<open-brack': self._Inline__found_open_bracket_func, 'tx<nu<__________': self._Inline__found_text_func, 'tx<hx<__________': self._Inline__found_text_func, 'tx<ut<__________': self._Inline__found_text_func, 'mi<mk<inline-fld': self._Inline__found_text_func, 'text': self._Inline__found_text_func, 'cw<nu<hard-lineb': self._Inline__found_text_func, 'cb<nu<clos-brack': self._Inline__close_bracket_func, 'mi<mk<par-end___': self._Inline__end_para_func, 'mi<mk<footnt-ope': self._Inline__end_para_func, 'mi<mk<footnt-ind': self._Inline__end_para_func } self._Inline__after_open_bracket_dict = { 'cb<nu<clos-brack': self._Inline__close_bracket_func, 'tx<nu<__________': self._Inline__found_text_func, 'tx<hx<__________': self._Inline__found_text_func, 'tx<ut<__________': self._Inline__found_text_func, 'text': self._Inline__found_text_func, 'cw<nu<hard-lineb': self._Inline__found_text_func, 'mi<mk<inline-fld': self._Inline__found_text_func, 'ob<nu<open-brack': self._Inline__found_open_bracket_func, 'mi<mk<par-end___': self._Inline__end_para_func, 'mi<mk<footnt-ope': self._Inline__end_para_func, 'mi<mk<footnt-ind': self._Inline__end_para_func, 'cw<fd<field_____': self._Inline__found_field_func } self._Inline__state = 'default' self._Inline__brac_count = 0 self._Inline__list_inline_list = [] self._Inline__body_inline_list = [] self._Inline__groups_in_waiting_list = [ 0] self._Inline__groups_in_waiting_body = [ 0] self._Inline__groups_in_waiting = self._Inline__groups_in_waiting_body self._Inline__place = 'non_list' self._Inline__inline_list = self._Inline__body_inline_list self._Inline__in_para = 0 self._Inline__char_dict = { 'annotation': 'annotation', 'blue______': 'blue', 'bold______': 'bold', 'caps______': 'caps', 'char-style': 'character-style', 'dbl-strike': 'double-strike-through', 'emboss____': 'emboss', 'engrave___': 'engrave', 'font-color': 'font-color', 'font-down_': 'subscript', 'font-size_': 'font-size', 'font-style': 'font-style', 'font-up___': 'superscript', 'footnot-mk': 'footnote-marker', 'green_____': 'green', 'hidden____': 'hidden', 'italics___': 'italics', 'outline___': 'outline', 'red_______': 'red', 'shadow____': 'shadow', 'small-caps': 'small-caps', 'strike-thr': 'strike-through', 'subscript_': 'subscript', 'superscrip': 'superscript', 'underlined': 'underlined' } self._Inline__caps_list = [ 'false'] def __set_list_func(self, line): if self._Inline__place == 'in_list': if self._Inline__token_info == 'mi<mk<lst-tx-end': self._Inline__place = 'not_in_list' self._Inline__inline_list = self._Inline__body_inline_list self._Inline__groups_in_waiting = self._Inline__groups_in_waiting_body elif self._Inline__token_info == 'mi<mk<lst-tx-beg': self._Inline__place = 'in_list' self._Inline__inline_list = self._Inline__list_inline_list self._Inline__groups_in_waiting = self._Inline__groups_in_waiting_list def __default_func(self, line): action = self._Inline__default_dict.get(self._Inline__token_info) if action: action(line) if self._Inline__token_info != 'cw<nu<hard-lineb': self._Inline__write_obj.write(line) def __found_open_bracket_func(self, line): self._Inline__state = 'after_open_bracket' self._Inline__brac_count += 1 self._Inline__groups_in_waiting[0] += 1 self._Inline__inline_list.append({ }) self._Inline__inline_list[-1]['contains_inline'] = 0 def __after_open_bracket_func(self, line): if line[0:5] == 'cw<ci': self._Inline__handle_control_word(line) else: action = self._Inline__after_open_bracket_dict.get(self._Inline__token_info) if action: self._Inline__state = 'default' action(line) self._Inline__write_obj.write(line) def __handle_control_word(self, line): char_info = line[6:16] char_value = line[20:-1] name = self._Inline__char_dict.get(char_info) if name: self._Inline__inline_list[-1]['contains_inline'] = 1 self._Inline__inline_list[-1][name] = char_value def __close_bracket_func(self, line): if len(self._Inline__inline_list) == 0: return None the_dict = self._Inline__inline_list[-1] the_keys = the_dict.keys() if self._Inline__place == 'in_list': if 'contains_inline' in the_keys and the_dict['contains_inline'] == 1 and self._Inline__groups_in_waiting[0] == 0: self._Inline__write_obj.write('mi<tg<close_____<inline\n') if 'font-style' in the_keys: self._Inline__write_obj.write('mi<mk<font-end__\n') if 'caps' in the_keys: self._Inline__write_obj.write('mi<mk<caps-end__\n') elif 'contains_inline' in the_keys and the_dict['contains_inline'] == 1 and self._Inline__in_para and self._Inline__groups_in_waiting[0] == 0: self._Inline__write_obj.write('mi<tg<close_____<inline\n') if 'font-style' in the_keys: self._Inline__write_obj.write('mi<mk<font-end__\n') if 'caps' in the_keys: self._Inline__write_obj.write('mi<mk<caps-end__\n') self._Inline__inline_list.pop() if self._Inline__groups_in_waiting[0] != 0: self._Inline__groups_in_waiting[0] -= 1 def __found_text_func(self, line): if self._Inline__place == 'in_list': self._Inline__write_inline() elif not self._Inline__in_para: self._Inline__in_para = 1 self._Inline__start_para_func(line) elif self._Inline__token_info == 'cw<nu<hard-lineb': self._Inline__write_obj.write('mi<tg<empty_____<hardline-break\n') if self._Inline__groups_in_waiting[0] != 0: self._Inline__write_inline() def __write_inline(self): if self._Inline__groups_in_waiting[0] != 0: last_index = -1 * self._Inline__groups_in_waiting[0] inline_list = self._Inline__inline_list[last_index:] if len(inline_list) <= 0: if self._Inline__run_level > 3: msg = 'self.__inline_list is %s\n' % self._Inline__inline_list raise self._Inline__bug_handler, msg self._Inline__run_level > 3 self._Inline__write_obj.write('error\n') self._Inline__groups_in_waiting[0] = 0 return None for the_dict in inline_list: if the_dict['contains_inline']: the_keys = the_dict.keys() if 'font-style' in the_keys: face = the_dict['font-style'] self._Inline__write_obj.write('mi<mk<font______<%s\n' % face) if 'caps' in the_keys: value = the_dict['caps'] self._Inline__write_obj.write('mi<mk<caps______<%s\n' % value) self._Inline__write_obj.write('mi<tg<open-att__<inline') for the_key in the_keys: if the_key != 'contains_inline': self._Inline__write_obj.write('<%s>%s' % (the_key, the_dict[the_key])) continue self._Inline__write_obj.write('\n') continue self._Inline__groups_in_waiting[0] = 0 def __end_para_func(self, line): if not self._Inline__in_para: return None if self._Inline__groups_in_waiting[0] == 0: inline_list = self._Inline__inline_list else: last_index = -1 * self._Inline__groups_in_waiting[0] inline_list = self._Inline__inline_list[0:last_index] for the_dict in inline_list: contains_info = the_dict.get('contains_inline') if contains_info: the_keys = the_dict.keys() if 'font-style' in the_keys: self._Inline__write_obj.write('mi<mk<font-end__\n') if 'caps' in the_keys: self._Inline__write_obj.write('mi<mk<caps-end__\n') self._Inline__write_obj.write('mi<tg<close_____<inline\n') continue self._Inline__in_para = 0 def __start_para_func(self, line): for the_dict in self._Inline__inline_list: contains_info = the_dict.get('contains_inline') if contains_info: the_keys = the_dict.keys() if 'font-style' in the_keys: face = the_dict['font-style'] self._Inline__write_obj.write('mi<mk<font______<%s\n' % face) if 'caps' in the_keys: value = the_dict['caps'] self._Inline__write_obj.write('mi<mk<caps______<%s\n' % value) self._Inline__write_obj.write('mi<tg<open-att__<inline') for the_key in the_keys: if the_key != 'contains_inline': self._Inline__write_obj.write('<%s>%s' % (the_key, the_dict[the_key])) continue self._Inline__write_obj.write('\n') continue self._Inline__groups_in_waiting[0] = 0 def __found_field_func(self, line): pass def form_tags(self): self._Inline__initiate_values() read_obj = open(self._Inline__file, 'r') self._Inline__write_obj = open(self._Inline__write_to, 'w') line_to_read = 1 while line_to_read: line_to_read = read_obj.readline() line = line_to_read token = line[0:-1] self._Inline__token_info = '' if token == 'tx<mc<__________<rdblquote' and token == 'tx<mc<__________<ldblquote' and token == 'tx<mc<__________<lquote' and token == 'tx<mc<__________<rquote' and token == 'tx<mc<__________<emdash' and token == 'tx<mc<__________<endash' or token == 'tx<mc<__________<bullet': self._Inline__token_info = 'text' else: self._Inline__token_info = line[:16] self._Inline__set_list_func(line) action = self._Inline__state_dict.get(self._Inline__state) if action == None: sys.stderr.write('No matching state in module inline_for_lists.py\n') sys.stderr.write(self._Inline__state + '\n') action(line) read_obj.close() self._Inline__write_obj.close() copy_obj = copy.Copy(bug_handler = self._Inline__bug_handler) if self._Inline__copy: copy_obj.copy_file(self._Inline__write_to, 'inline.data') copy_obj.rename(self._Inline__write_to, self._Inline__file) os.remove(self._Inline__write_to)