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
-
- class ListNumbers:
-
- def __init__(self, in_file, bug_handler, copy = None, run_level = 1):
- self._ListNumbers__file = in_file
- self._ListNumbers__bug_handler = bug_handler
- self._ListNumbers__copy = copy
- self._ListNumbers__write_to = tempfile.mktemp()
-
-
- def __initiate_values(self):
- self._ListNumbers__state = 'default'
- self._ListNumbers__list_chunk = ''
- self._ListNumbers__previous_line = ''
- self._ListNumbers__list_text_ob_count = ''
- self._ListNumbers__state_dict = {
- 'default': self._ListNumbers__default_func,
- 'after_ob': self._ListNumbers__after_ob_func,
- 'list_text': self._ListNumbers__list_text_func,
- 'after_list_text': self._ListNumbers__after_list_text_func }
-
-
- def __after_ob_func(self, line):
- if self._ListNumbers__token_info == 'cw<ls<list-text_':
- self._ListNumbers__state = 'list_text'
- self._ListNumbers__list_chunk = self._ListNumbers__list_chunk + self._ListNumbers__previous_line + line
- self._ListNumbers__list_text_ob = self._ListNumbers__ob_count
- self._ListNumbers__cb_count = 0
- else:
- self._ListNumbers__write_obj.write(self._ListNumbers__previous_line)
- self._ListNumbers__write_obj.write(line)
- self._ListNumbers__state = 'default'
-
-
- def __after_list_text_func(self, line):
- if line[0:2] == 'ob' or line[0:2] == 'tx':
- self._ListNumbers__state = 'default'
- self._ListNumbers__write_obj.write('mi<mk<lst-txbeg_\n')
- self._ListNumbers__write_obj.write('mi<mk<para-beg__\n')
- self._ListNumbers__write_obj.write('mi<mk<lst-tx-beg\n')
- self._ListNumbers__write_obj.write('mi<tg<open-att__<list-text\n')
- self._ListNumbers__write_obj.write(self._ListNumbers__list_chunk)
- self._ListNumbers__write_obj.write('mi<tg<close_____<list-text\n')
- self._ListNumbers__write_obj.write('mi<mk<lst-tx-end\n')
- self._ListNumbers__list_chunk = ''
-
- self._ListNumbers__write_obj.write(line)
-
-
- def __determine_list_type(self, chunk):
- lines = chunk.split('\n')
- text_string = ''
- for line in lines:
- if line[0:5] == 'tx<hx':
- if line[17:] == "'B7":
- return 'unordered'
- continue
- line[17:] == "'B7"
- if line[0:5] == 'tx<nu':
- text_string += line[17:]
- continue
-
- text_string = text_string.replace('.', '')
- text_string = text_string.replace('(', '')
- text_string = text_string.replace(')', '')
- if text_string.isdigit():
- return 'ordered'
- return 'unordered'
-
-
- def __list_text_func(self, line):
- if self._ListNumbers__list_text_ob == self._ListNumbers__cb_count:
- self._ListNumbers__state = 'after_list_text'
- self._ListNumbers__right_after_list_text = 1
- self._ListNumbers__list_type = self._ListNumbers__determine_list_type(self._ListNumbers__list_chunk)
- self._ListNumbers__write_obj.write('mi<mk<list-type_<%s\n' % self._ListNumbers__list_type)
-
- if self._ListNumbers__token_info != 'cw<pf<par-def___':
- self._ListNumbers__list_chunk = self._ListNumbers__list_chunk + line
-
-
-
- def __default_func(self, line):
- if self._ListNumbers__token_info == 'ob<nu<open-brack':
- self._ListNumbers__state = 'after_ob'
- self._ListNumbers__previous_line = line
- else:
- self._ListNumbers__write_obj.write(line)
-
-
- def fix_list_numbers(self):
- self._ListNumbers__initiate_values()
- read_obj = open(self._ListNumbers__file, 'r')
- self._ListNumbers__write_obj = open(self._ListNumbers__write_to, 'w')
- line_to_read = 1
- while line_to_read:
- line_to_read = read_obj.readline()
- line = line_to_read
- self._ListNumbers__token_info = line[:16]
- if self._ListNumbers__token_info == 'ob<nu<open-brack':
- self._ListNumbers__ob_count = line[-5:-1]
-
- if self._ListNumbers__token_info == 'cb<nu<clos-brack':
- self._ListNumbers__cb_count = line[-5:-1]
-
- action = self._ListNumbers__state_dict.get(self._ListNumbers__state)
- action(line)
- read_obj.close()
- self._ListNumbers__write_obj.close()
- copy_obj = copy.Copy(bug_handler = self._ListNumbers__bug_handler)
- if self._ListNumbers__copy:
- copy_obj.copy_file(self._ListNumbers__write_to, 'list_numbers.data')
-
- copy_obj.rename(self._ListNumbers__write_to, self._ListNumbers__file)
- os.remove(self._ListNumbers__write_to)
-
-
-