home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyc (Python 2.6)
-
- import sys
- import os
- import tempfile
- import re
- from calibre.ebooks.rtf2xml import field_strings, copy
-
- class FieldsSmall:
-
- def __init__(self, in_file, bug_handler, copy = None, run_level = 1):
- self._FieldsSmall__file = in_file
- self._FieldsSmall__bug_handler = bug_handler
- self._FieldsSmall__copy = copy
- self._FieldsSmall__write_to = tempfile.mktemp()
- self._FieldsSmall__run_level = run_level
-
-
- def __initiate_values(self):
- self._FieldsSmall__string_obj = field_strings.FieldStrings(bug_handler = self._FieldsSmall__bug_handler)
- self._FieldsSmall__state = 'before_body'
- self._FieldsSmall__text_string = ''
- self._FieldsSmall__marker = 'mi<mk<inline-fld\n'
- self._FieldsSmall__state_dict = {
- 'before_body': self._FieldsSmall__before_body_func,
- 'body': self._FieldsSmall__body_func,
- 'bookmark': self._FieldsSmall__bookmark_func,
- 'toc_index': self._FieldsSmall__toc_index_func }
- self._FieldsSmall__body_dict = {
- 'cw<an<book-mk-st': (self._FieldsSmall__found_bookmark_func, 'start'),
- 'cw<an<book-mk-en': (self._FieldsSmall__found_bookmark_func, 'end'),
- 'cw<an<toc_______': (self._FieldsSmall__found_toc_index_func, 'toc'),
- 'cw<an<index-mark': (self._FieldsSmall__found_toc_index_func, 'index') }
- ob = 'ob<nu<open-brack.....'
- cb = 'cb<nu<clos-brack'
- bk_st = 'cw<an<book-mk-st<nu<true'
- tx = 'tx<nu<__________<(.*?)'
- reg_st = ob + bk_st + tx + cb
- self._FieldsSmall__book_start = re.compile('%s' % reg_st)
-
-
- def __before_body_func(self, line):
- if self._FieldsSmall__token_info == 'mi<mk<body-open_':
- self._FieldsSmall__state = 'body'
-
- self._FieldsSmall__write_obj.write(line)
-
-
- def __body_func(self, line):
- (action, tag) = self._FieldsSmall__body_dict.get(self._FieldsSmall__token_info, (None, None))
- if action:
- action(line, tag)
- else:
- self._FieldsSmall__write_obj.write(line)
-
-
- def __found_bookmark_func(self, line, tag):
- self._FieldsSmall__beg_bracket_count = self._FieldsSmall__ob_count
- self._FieldsSmall__cb_count = 0
- self._FieldsSmall__state = 'bookmark'
- self._FieldsSmall__type_of_bookmark = tag
-
-
- def __bookmark_func(self, line):
- if self._FieldsSmall__beg_bracket_count == self._FieldsSmall__cb_count:
- self._FieldsSmall__state = 'body'
- type = 'bookmark-%s' % self._FieldsSmall__type_of_bookmark
- my_string = self._FieldsSmall__parse_bookmark_func(self._FieldsSmall__text_string, type)
- self._FieldsSmall__write_obj.write(self._FieldsSmall__marker)
- self._FieldsSmall__write_obj.write(my_string)
- self._FieldsSmall__text_string = ''
- self._FieldsSmall__write_obj.write(line)
- elif line[0:2] == 'tx':
- self._FieldsSmall__text_string += line[17:-1]
-
-
-
- def __parse_index_func(self, my_string):
- (my_string, see_string) = self._FieldsSmall__index_see_func(my_string)
- (my_string, bookmark_string) = self._FieldsSmall__index_bookmark_func(my_string)
- (italics, bold) = self._FieldsSmall__index__format_func(my_string)
- found_sub = 0
- my_changed_string = 'mi<tg<empty-att_<field<type>index-entry'
- my_changed_string += '<update>static'
- if see_string:
- my_changed_string += '<additional-text>%s' % see_string
-
- if bookmark_string:
- my_changed_string += '<bookmark>%s' % bookmark_string
-
- if italics:
- my_changed_string += '<italics>true'
-
- if bold:
- my_changed_string += '<bold>true'
-
- main_entry = ''
- sub_entry = ''
- lines = my_string.split('\n')
- for line in lines:
- token_info = line[:16]
- if token_info == 'cw<ml<colon_____':
- found_sub = 1
- continue
- if token_info[0:2] == 'tx':
- if found_sub:
- sub_entry += line[17:]
- else:
- main_entry += line[17:]
- found_sub
-
- my_changed_string += '<main-entry>%s' % main_entry
- if found_sub:
- my_changed_string += '<sub-entry>%s' % sub_entry
-
- my_changed_string += '\n'
- return my_changed_string
-
-
- def __index_see_func(self, my_string):
- in_see = 0
- bracket_count = 0
- see_string = ''
- changed_string = ''
- lines = my_string.split('\n')
- end_bracket_count = sys.maxint
- for line in lines:
- token_info = line[:16]
- if token_info == 'ob<nu<open-brack':
- bracket_count += 1
-
- if token_info == 'cb<nu<clos-brack':
- bracket_count -= 1
-
- if in_see:
- if bracket_count == end_bracket_count and token_info == 'cb<nu<clos-brack':
- in_see = 0
- elif token_info == 'tx<nu<__________':
- see_string += line[17:]
-
- token_info == 'cb<nu<clos-brack'
- if token_info == 'cw<in<index-see_':
- end_bracket_count = bracket_count - 1
- in_see = 1
-
- changed_string += '%s\n' % line
-
- return (changed_string, see_string)
-
-
- def __index_bookmark_func(self, my_string):
- in_bookmark = 0
- bracket_count = 0
- bookmark_string = ''
- index_string = ''
- lines = my_string.split('\n')
- end_bracket_count = sys.maxint
- for line in lines:
- token_info = line[:16]
- if token_info == 'ob<nu<open-brack':
- bracket_count += 1
-
- if token_info == 'cb<nu<clos-brack':
- bracket_count -= 1
-
- if in_bookmark:
- if bracket_count == end_bracket_count and token_info == 'cb<nu<clos-brack':
- in_bookmark = 0
- index_string += '%s\n' % line
- elif token_info == 'tx<nu<__________':
- bookmark_string += line[17:]
- else:
- index_string += '%s\n' % line
- token_info == 'cb<nu<clos-brack'
- if token_info == 'cw<an<place_____':
- end_bracket_count = bracket_count - 1
- in_bookmark = 1
-
- index_string += '%s\n' % line
-
- return (index_string, bookmark_string)
-
-
- def __index__format_func(self, my_string):
- italics = 0
- bold = 0
- lines = my_string.split('\n')
- for line in lines:
- token_info = line[:16]
- if token_info == 'cw<in<index-bold':
- bold = 1
-
- if token_info == 'cw<in<index-ital':
- italics = 1
- continue
-
- return (italics, bold)
-
-
- def __parse_toc_func(self, my_string):
- toc_level = 0
- toc_suppress = 0
- (my_string, book_start_string, book_end_string) = self._FieldsSmall__parse_bookmark_for_toc(my_string)
- main_entry = ''
- my_changed_string = 'mi<tg<empty-att_<field<type>toc-entry'
- my_changed_string += '<update>static'
- if book_start_string:
- my_changed_string += '<bookmark-start>%s' % book_start_string
-
- if book_end_string:
- my_changed_string += '<bookmark-end>%s' % book_end_string
-
- lines = my_string.split('\n')
- for line in lines:
- token_info = line[:16]
- if token_info[0:2] == 'tx':
- main_entry += line[17:]
-
- if token_info == 'cw<tc<toc-level_':
- toc_level = line[20:]
-
- if token_info == 'cw<tc<toc-sup-nu':
- toc_suppress = 1
- continue
-
- if toc_level:
- my_changed_string += '<toc-level>%s' % toc_level
-
- if toc_suppress:
- my_changed_string += '<toc-suppress-number>true'
-
- my_changed_string += '<main-entry>%s' % main_entry
- my_changed_string += '\n'
- return my_changed_string
-
-
- def __parse_bookmark_for_toc(self, my_string):
- in_bookmark = 0
- bracket_count = 0
- book_start_string = ''
- book_end_string = ''
- book_type = 0
- toc_string = ''
- lines = my_string.split('\n')
- end_bracket_count = sys.maxint
- for line in lines:
- token_info = line[:16]
- if token_info == 'ob<nu<open-brack':
- bracket_count += 1
-
- if token_info == 'cb<nu<clos-brack':
- bracket_count -= 1
-
- if in_bookmark:
- if bracket_count == end_bracket_count and token_info == 'cb<nu<clos-brack':
- in_bookmark = 0
- toc_string += '%s\n' % line
- elif token_info == 'tx<nu<__________':
- if book_type == 'start':
- book_start_string += line[17:]
- elif book_type == 'end':
- book_end_string += line[17:]
-
- else:
- toc_string += '%s\n' % line
- token_info == 'cb<nu<clos-brack'
- if token_info == 'cw<an<book-mk-st' or token_info == 'cw<an<book-mk-en':
- if token_info == 'cw<an<book-mk-st':
- book_type = 'start'
-
- if token_info == 'cw<an<book-mk-en':
- book_type = 'end'
-
- end_bracket_count = bracket_count - 1
- in_bookmark = 1
-
- toc_string += '%s\n' % line
-
- return (toc_string, book_start_string, book_end_string)
-
-
- def __parse_bookmark_func(self, my_string, type):
- my_changed_string = 'mi<tg<empty-att_<field<type>%s<number>%s<update>none\n' % (type, my_string)
- return my_changed_string
-
-
- def __found_toc_index_func(self, line, tag):
- self._FieldsSmall__beg_bracket_count = self._FieldsSmall__ob_count
- self._FieldsSmall__cb_count = 0
- self._FieldsSmall__state = 'toc_index'
- self._FieldsSmall__tag = tag
-
-
- def __toc_index_func(self, line):
- pass
-
-
- def fix_fields(self):
- self._FieldsSmall__initiate_values()
- read_obj = open(self._FieldsSmall__file)
- self._FieldsSmall__write_obj = open(self._FieldsSmall__write_to, 'w')
- line_to_read = '1'
- while line_to_read:
- line_to_read = read_obj.readline()
- line = line_to_read
- self._FieldsSmall__token_info = line[:16]
- if self._FieldsSmall__token_info == 'ob<nu<open-brack':
- self._FieldsSmall__ob_count = line[-5:-1]
-
- if self._FieldsSmall__token_info == 'cb<nu<clos-brack':
- self._FieldsSmall__cb_count = line[-5:-1]
-
- action = self._FieldsSmall__state_dict.get(self._FieldsSmall__state)
- if action == None:
- sys.stderr.write('no no matching state in module fields_small.py\n')
- sys.stderr.write(self._FieldsSmall__state + '\n')
-
- action(line)
- read_obj.close()
- self._FieldsSmall__write_obj.close()
- copy_obj = copy.Copy(bug_handler = self._FieldsSmall__bug_handler)
- if self._FieldsSmall__copy:
- copy_obj.copy_file(self._FieldsSmall__write_to, 'fields_small.data')
-
- copy_obj.rename(self._FieldsSmall__write_to, self._FieldsSmall__file)
- os.remove(self._FieldsSmall__write_to)
-
-
-