diff --git a/src/calibre/ebooks/fb2/fb2ml.py b/src/calibre/ebooks/fb2/fb2ml.py index 3bc3424c39..d2e90b6d44 100644 --- a/src/calibre/ebooks/fb2/fb2ml.py +++ b/src/calibre/ebooks/fb2/fb2ml.py @@ -8,7 +8,6 @@ __docformat__ = 'restructuredtext en' Transform OEB content into FB2 markup ''' -import os import cStringIO from base64 import b64encode @@ -52,29 +51,29 @@ STYLES = [ ] class FB2MLizer(object): - + def __init__(self, log): self.log = log self.image_hrefs = {} self.link_hrefs = {} - + def extract_content(self, oeb_book, opts): self.log.info('Converting XHTML to FB2 markup...') self.oeb_book = oeb_book self.opts = opts return self.fb2mlize_spine() - + def fb2mlize_spine(self): self.image_hrefs = {} self.link_hrefs = {} - output = self.fb2_header() - output += self.get_cover_page() - output += u'ghji87yhjko0Caliblre-toc-placeholder-for-insertion-later8ujko0987yjk' - output += self.get_text() - output += self.fb2_body_footer() - output += self.fb2mlize_images() - output += self.fb2_footer() - output = output.replace(u'ghji87yhjko0Caliblre-toc-placeholder-for-insertion-later8ujko0987yjk', self.get_toc()) + output = [self.fb2_header()] + output.append(self.get_cover_page()) + output.append(u'ghji87yhjko0Caliblre-toc-placeholder-for-insertion-later8ujko0987yjk') + output.append(self.get_text()) + output.append(self.fb2_body_footer()) + output.append(self.fb2mlize_images()) + output.append(self.fb2_footer()) + output = ''.join(output).replace(u'ghji87yhjko0Caliblre-toc-placeholder-for-insertion-later8ujko0987yjk', self.get_toc()) return u'\n%s' % etree.tostring(etree.fromstring(output), encoding=unicode, pretty_print=True) def fb2_header(self): @@ -82,7 +81,7 @@ class FB2MLizer(object): author_middle = u'' author_last = u'' author_parts = self.oeb_book.metadata.creator[0].value.split(' ') - + if len(author_parts) == 1: author_last = author_parts[0] elif len(author_parts) == 2: @@ -117,29 +116,29 @@ class FB2MLizer(object): return output def get_toc(self): - toc = u'' + toc = [u''] if self.opts.inline_toc: self.log.debug('Generating table of contents...') - toc += u'
%s
' % _('Table of Contents:') + toc.append(u'%s
' % _('Table of Contents:')) for item in self.oeb_book.toc: if item.href in self.link_hrefs.keys(): - toc += '\n' % (self.link_hrefs[item.href], item.title) + toc.append('\n' % (self.link_hrefs[item.href], item.title)) else: self.oeb.warn('Ignoring toc item: %s not found in document.' % item) - return toc + return ''.join(toc) def get_text(self): - text = u'' + text = [u''] for item in self.oeb_book.spine: self.log.debug('Converting %s to FictionBook2 XML' % item.href) stylizer = Stylizer(item.data, item.href, self.oeb_book, self.opts.output_profile) - text += self.add_page_anchor(item) + text.append(self.add_page_anchor(item)) text += self.dump_text(item.data.find(XHTML('body')), stylizer, item) - return text + return ''.join(text) def fb2_body_footer(self): return u'\n\n