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, check_brackets
-
- class AddBrackets:
-
- def __init__(self, in_file, bug_handler, copy = None, run_level = 1):
- self._AddBrackets__file = in_file
- self._AddBrackets__bug_handler = bug_handler
- self._AddBrackets__copy = copy
- self._AddBrackets__write_to = tempfile.mktemp()
- self._AddBrackets__run_level = run_level
-
-
- def __initiate_values(self):
- self._AddBrackets__state_dict = {
- 'before_body': self._AddBrackets__before_body_func,
- 'in_body': self._AddBrackets__in_body_func,
- 'after_control_word': self._AddBrackets__after_control_word_func,
- 'in_ignore': self._AddBrackets__ignore_func }
- self._AddBrackets__state = 'before_body'
- self._AddBrackets__inline = { }
- self._AddBrackets__temp_group = []
- self._AddBrackets__open_bracket = 0
- self._AddBrackets__found_brackets = 0
- self._AddBrackets__accept = [
- 'cw<ci<bold______',
- 'cw<ci<annotation',
- 'cw<ci<blue______',
- 'cw<ci<bold______',
- 'cw<ci<caps______',
- 'cw<ci<char-style',
- 'cw<ci<dbl-strike',
- 'cw<ci<emboss____',
- 'cw<ci<engrave___',
- 'cw<ci<font-color',
- 'cw<ci<font-down_',
- 'cw<ci<font-size_',
- 'cw<ci<font-style',
- 'cw<ci<font-up___',
- 'cw<ci<footnot-mk',
- 'cw<ci<green_____',
- 'cw<ci<hidden____',
- 'cw<ci<italics___',
- 'cw<ci<outline___',
- 'cw<ci<red_______',
- 'cw<ci<shadow____',
- 'cw<ci<small-caps',
- 'cw<ci<strike-thr',
- 'cw<ci<subscript_',
- 'cw<ci<superscrip',
- 'cw<ci<underlined',
- 'cw<ul<underlined']
-
-
- def __before_body_func(self, line):
- if self._AddBrackets__token_info == 'mi<mk<body-open_':
- self._AddBrackets__state = 'in_body'
-
- self._AddBrackets__write_obj.write(line)
-
-
- def __in_body_func(self, line):
- if line == 'cb<nu<clos-brack<0001\n' and self._AddBrackets__open_bracket:
- self._AddBrackets__write_obj.write('cb<nu<clos-brack<0003\n')
- self._AddBrackets__write_obj.write(line)
- elif self._AddBrackets__token_info == 'ob<nu<open-brack':
- self._AddBrackets__found_brackets = 1
- self._AddBrackets__state = 'in_ignore'
- self._AddBrackets__ignore_count = self._AddBrackets__ob_count
- self._AddBrackets__write_obj.write(line)
- elif self._AddBrackets__token_info in self._AddBrackets__accept:
- self._AddBrackets__temp_group.append(line)
- self._AddBrackets__state = 'after_control_word'
- else:
- self._AddBrackets__write_obj.write(line)
-
-
- def __after_control_word_func(self, line):
- if self._AddBrackets__token_info in self._AddBrackets__accept:
- self._AddBrackets__temp_group.append(line)
- else:
- self._AddBrackets__change_permanent_group()
- self._AddBrackets__write_group()
- self._AddBrackets__write_obj.write(line)
- if self._AddBrackets__token_info == 'ob<nu<open-brack':
- self._AddBrackets__state = 'in_ignore'
- self._AddBrackets__ignore_count = self._AddBrackets__ob_count
- else:
- self._AddBrackets__state = 'in_body'
-
-
- def __write_group(self):
- if self._AddBrackets__open_bracket:
- self._AddBrackets__write_obj.write('cb<nu<clos-brack<0003\n')
- self._AddBrackets__open_bracket = 0
-
- inline_string = ''
- the_keys = self._AddBrackets__inline.keys()
- for the_key in the_keys:
- value = self._AddBrackets__inline[the_key]
- if value != 'false':
- inline_string += '%s<nu<%s\n' % (the_key, value)
- continue
-
- if inline_string:
- self._AddBrackets__write_obj.write('ob<nu<open-brack<0003\n')
- self._AddBrackets__write_obj.write(inline_string)
- self._AddBrackets__open_bracket = 1
-
- self._AddBrackets__temp_group = []
-
-
- def __change_permanent_group(self):
- for line in self._AddBrackets__temp_group:
- token_info = line[:16]
- if token_info in self._AddBrackets__accept:
- att = line[20:-1]
- self._AddBrackets__inline[token_info] = att
- continue
-
-
-
- def __ignore_func(self, line):
- self._AddBrackets__write_obj.write(line)
- if self._AddBrackets__token_info == 'cb<nu<clos-brack' and self._AddBrackets__cb_count == self._AddBrackets__ignore_count:
- self._AddBrackets__state = 'in_body'
-
-
-
- def __check_brackets(self, in_file):
- self._AddBrackets__check_brack_obj = check_brackets.CheckBrackets(file = in_file)
- good_br = self._AddBrackets__check_brack_obj.check_brackets()[0]
- if not good_br:
- return 1
-
-
- def add_brackets(self):
- self._AddBrackets__initiate_values()
- read_obj = open(self._AddBrackets__file, 'r')
- self._AddBrackets__write_obj = open(self._AddBrackets__write_to, 'w')
- line_to_read = 1
- while line_to_read:
- line_to_read = read_obj.readline()
- line = line_to_read
- self._AddBrackets__token_info = line[:16]
- if self._AddBrackets__token_info == 'ob<nu<open-brack':
- self._AddBrackets__ob_count = line[-5:-1]
-
- if self._AddBrackets__token_info == 'cb<nu<clos-brack':
- self._AddBrackets__cb_count = line[-5:-1]
-
- action = self._AddBrackets__state_dict.get(self._AddBrackets__state)
- if action == None:
- sys.stderr.write('No matching state in module add_brackets.py\n')
- sys.stderr.write(self._AddBrackets__state + '\n')
-
- action(line)
- read_obj.close()
- self._AddBrackets__write_obj.close()
- bad_brackets = self._AddBrackets__check_brackets(self._AddBrackets__write_to)
- if not bad_brackets:
- copy_obj = copy.Copy(bug_handler = self._AddBrackets__bug_handler)
- if self._AddBrackets__copy:
- copy_obj.copy_file(self._AddBrackets__write_to, 'add_brackets.data')
-
- copy_obj.rename(self._AddBrackets__write_to, self._AddBrackets__file)
- elif self._AddBrackets__run_level > 0:
- sys.stderr.write('Sorry, but this files has a mix of old and new RTF.\nSome characteristics cannot be converted.\n')
-
- os.remove(self._AddBrackets__write_to)
-
-
-