From 629da2b324ff5017e3a316bed0722cb591259258 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 20 Jul 2011 14:01:41 -0600 Subject: [PATCH] ... --- src/calibre/ebooks/mobi/debug.py | 62 +------------------ .../ebooks/mobi/{writer2 => }/utils.py | 0 src/calibre/ebooks/mobi/writer2/main.py | 2 +- 3 files changed, 4 insertions(+), 60 deletions(-) rename src/calibre/ebooks/mobi/{writer2 => }/utils.py (100%) diff --git a/src/calibre/ebooks/mobi/debug.py b/src/calibre/ebooks/mobi/debug.py index 9bc587c527..971f037479 100644 --- a/src/calibre/ebooks/mobi/debug.py +++ b/src/calibre/ebooks/mobi/debug.py @@ -11,7 +11,7 @@ import struct, datetime, sys, os, shutil from collections import OrderedDict from calibre.utils.date import utc_tz from calibre.ebooks.mobi.langcodes import main_language, sub_language -from calibre.ebooks.mobi.writer2.utils import (decode_hex_number, decint, +from calibre.ebooks.mobi.utils import (decode_hex_number, decint, get_trailing_data) from calibre.utils.magick.draw import identify_data @@ -738,8 +738,7 @@ class CNCX(object) : # {{{ class TextRecord(object): # {{{ - def __init__(self, idx, record, extra_data_flags, decompress, index_record, - doc_type): + def __init__(self, idx, record, extra_data_flags, decompress): self.trailing_data, self.raw = get_trailing_data(record.raw, extra_data_flags) self.raw = decompress(self.raw) if 0 in self.trailing_data: @@ -751,60 +750,6 @@ class TextRecord(object): # {{{ self.idx = idx - if 'indexing' in self.trailing_data and index_record is not None: - self.interpret_indexing(doc_type, index_record.indices) - - def interpret_indexing(self, doc_type, indices): - raw = self.trailing_data['indexing'] - ident, consumed = decint(raw) - raw = raw[consumed:] - entry_type = ident & 0b111 - index_entry_idx = ident >> 3 - index_entry = None - for i in indices: - if i.index == index_entry_idx: - index_entry = i.label - break - self.trailing_data['interpreted_indexing'] = ( - 'Type: %s, Index Entry: %s'%(entry_type, index_entry)) - if doc_type == 2: # Book - self.interpret_book_indexing(raw, entry_type) - - def interpret_book_indexing(self, raw, entry_type): - arg1, consumed = decint(raw) - raw = raw[consumed:] - if arg1 != 0: - raise ValueError('TBS index entry has unknown arg1: %d'% - arg1) - if entry_type == 2: - desc = ('This record has only a single starting or a single' - ' ending point') - if raw: - raise ValueError('TBS index entry has unknown extra bytes:' - ' %r'%raw) - elif entry_type == 3: - desc = ('This record is spanned by a single node (i.e. it' - ' has no start or end points)') - arg2, consumed = decint(raw) - if arg2 != 0: - raise ValueError('TBS index entry has unknown arg2: %d'% - arg2) - elif entry_type == 6: - if len(raw) != 1: - raise ValueError('TBS index entry has unknown extra bytes:' - ' %r'%raw) - num = ord(raw[0]) - # An unmatched starting or ending point each contributes 1 to - # this count. A matched pair of starting and ending points - # together contribute 1 to this count. Note that you can only - # ever have either 1 unmatched start point or 1 unmatched end - # point, never both (logically impossible). - desc = ('This record has %d starting/ending points and/or complete' - ' nodes.')%num - else: - raise ValueError('Unknown TBS index entry type: %d for book'%entry_type) - self.trailing_data['interpreted_indexing'] += ' :: ' + desc - def dump(self, folder): name = '%06d'%self.idx with open(os.path.join(folder, name+'.txt'), 'wb') as f: @@ -910,8 +855,7 @@ class MOBIFile(object): # {{{ if fntbr == 0xffffffff: fntbr = len(self.records) self.text_records = [TextRecord(r, self.records[r], - self.mobi_header.extra_data_flags, decompress, self.index_record, - self.mobi_header.type_raw) for r in xrange(1, + self.mobi_header.extra_data_flags, decompress) for r in xrange(1, min(len(self.records), ntr+1))] self.image_records, self.binary_records = [], [] for i in xrange(fntbr, len(self.records)): diff --git a/src/calibre/ebooks/mobi/writer2/utils.py b/src/calibre/ebooks/mobi/utils.py similarity index 100% rename from src/calibre/ebooks/mobi/writer2/utils.py rename to src/calibre/ebooks/mobi/utils.py diff --git a/src/calibre/ebooks/mobi/writer2/main.py b/src/calibre/ebooks/mobi/writer2/main.py index 76976ce81e..2e9d31458a 100644 --- a/src/calibre/ebooks/mobi/writer2/main.py +++ b/src/calibre/ebooks/mobi/writer2/main.py @@ -18,7 +18,7 @@ from calibre.ebooks.compression.palmdoc import compress_doc from calibre.ebooks.mobi.langcodes import iana2mobi from calibre.utils.filenames import ascii_filename from calibre.ebooks.mobi.writer2 import PALMDOC, UNCOMPRESSED -from calibre.ebooks.mobi.writer2.utils import (rescale_image, encint) +from calibre.ebooks.mobi.utils import (rescale_image, encint) EXTH_CODES = { 'creator': 100,