home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2010 November / maximum-cd-2010-11.iso / DiscContents / calibre-0.7.13.msi / file_1032 (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2010-08-06  |  3.0 KB  |  73 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. __license__ = 'GPL v3'
  5. __copyright__ = '2009, John Schember <john@nachtimwald.com>'
  6. __docformat__ = 'restructuredtext en'
  7. import struct
  8. from calibre.ebooks.pdb.formatwriter import FormatWriter
  9. from calibre.ebooks.pdb.header import PdbHeaderBuilder
  10. from calibre.ebooks.txt.txtml import TXTMLizer
  11. from calibre.ebooks.txt.newlines import TxtNewlines, specified_newlines
  12. MAX_RECORD_SIZE = 4096
  13.  
  14. class Writer(FormatWriter):
  15.     
  16.     def __init__(self, opts, log):
  17.         self.opts = opts
  18.         self.log = log
  19.  
  20.     
  21.     def write_content(self, oeb_book, out_stream, metadata = None):
  22.         compress_doc = compress_doc
  23.         import calibre.ebooks.compression.palmdoc
  24.         if self.opts.title:
  25.             pass
  26.         elif oeb_book.metadata.title != []:
  27.             pass
  28.         
  29.         title = _('Unknown')
  30.         (txt_records, txt_length) = self._generate_text(oeb_book)
  31.         header_record = self._header_record(txt_length, len(txt_records))
  32.         section_lengths = [
  33.             len(header_record)]
  34.         self.log.info('Compessing data...')
  35.         for i in range(0, len(txt_records)):
  36.             self.log.debug('\tCompressing record %i' % i)
  37.             txt_records[i] = compress_doc(txt_records[i])
  38.             section_lengths.append(len(txt_records[i]))
  39.         
  40.         out_stream.seek(0)
  41.         hb = PdbHeaderBuilder('TEXtREAd', title)
  42.         hb.build_header(section_lengths, out_stream)
  43.         for record in [
  44.             header_record] + txt_records:
  45.             out_stream.write(record)
  46.         
  47.  
  48.     
  49.     def _generate_text(self, oeb_book):
  50.         writer = TXTMLizer(self.log)
  51.         txt = writer.extract_content(oeb_book, self.opts)
  52.         self.log.debug('\tReplacing newlines with selected type...')
  53.         txt = specified_newlines(TxtNewlines('windows').newline, txt).encode(self.opts.output_encoding, 'replace')
  54.         txt_length = len(txt)
  55.         txt_records = []
  56.         for i in range(0, len(txt) / MAX_RECORD_SIZE + 1):
  57.             txt_records.append(txt[i * MAX_RECORD_SIZE:i * MAX_RECORD_SIZE + MAX_RECORD_SIZE])
  58.         
  59.         return (txt_records, txt_length)
  60.  
  61.     
  62.     def _header_record(self, txt_length, record_count):
  63.         record = ''
  64.         record += struct.pack('>H', 2)
  65.         record += struct.pack('>H', 0)
  66.         record += struct.pack('>L', txt_length)
  67.         record += struct.pack('>H', record_count)
  68.         record += struct.pack('>H', MAX_RECORD_SIZE)
  69.         record += struct.pack('>L', 0)
  70.         return record
  71.  
  72.  
  73.