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

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. from __future__ import with_statement
  5. __license__ = 'GPL v3'
  6. __copyright__ = '2008, Marshall T. Vandegrift <llasram@gmail.com>'
  7. import os
  8. from calibre.ebooks.oeb.base import OPF_MIME, xml2str
  9. from calibre.ebooks.oeb.base import DirContainer, OEBError
  10. __all__ = [
  11.     'OEBWriter']
  12.  
  13. class OEBWriter(object):
  14.     DEFAULT_PROFILE = 'PRS505'
  15.     TRANSFORMS = []
  16.     
  17.     def __init__(self, version = '2.0', page_map = False, pretty_print = False):
  18.         self.version = version
  19.         self.page_map = page_map
  20.         self.pretty_print = pretty_print
  21.  
  22.     
  23.     def config(cls, cfg):
  24.         oeb = cfg.add_group('oeb', _('OPF/NCX/etc. generation options.'))
  25.         versions = [
  26.             '1.2',
  27.             '2.0']
  28.         oeb('opf_version', [
  29.             '--opf-version'], default = '2.0', choices = versions, help = _('OPF version to generate. Default is %default.'))
  30.         oeb('adobe_page_map', [
  31.             '--adobe-page-map'], default = False, help = _('Generate an Adobe "page-map" file if pagination information is available.'))
  32.         return cfg
  33.  
  34.     config = classmethod(config)
  35.     
  36.     def generate(cls, opts):
  37.         version = opts.opf_version
  38.         page_map = opts.adobe_page_map
  39.         pretty_print = opts.pretty_print
  40.         return cls(version = version, page_map = page_map, pretty_print = pretty_print)
  41.  
  42.     generate = classmethod(generate)
  43.     
  44.     def __call__(self, oeb, path):
  45.         version = int(self.version[0])
  46.         opfname = None
  47.         if os.path.splitext(path)[1].lower() == '.opf':
  48.             opfname = os.path.basename(path)
  49.             path = os.path.dirname(path)
  50.         
  51.         if not os.path.isdir(path):
  52.             os.mkdir(path)
  53.         
  54.         output = DirContainer(path, oeb.log)
  55.         for item in oeb.manifest.values():
  56.             output.write(item.href, str(item))
  57.         
  58.         if version == 1:
  59.             metadata = oeb.to_opf1()
  60.         elif version == 2:
  61.             metadata = oeb.to_opf2(page_map = self.page_map)
  62.         else:
  63.             raise OEBError('Unrecognized OPF version %r' % self.version)
  64.         pretty_print = (version == 1).pretty_print
  65.         for href, data in metadata.items():
  66.             if opfname and mime == OPF_MIME:
  67.                 href = opfname
  68.             
  69.             output.write(href, xml2str(data, pretty_print = pretty_print))
  70.         
  71.  
  72.  
  73.