mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-06-23 15:30:45 -04:00
MOBI Output: Ignore the Table of Contents pointed to by the guide, if it contains no links
This commit is contained in:
parent
bc74856b2d
commit
0fb6d7bd59
@ -1463,9 +1463,17 @@ class TOC(object):
|
|||||||
except ValueError:
|
except ValueError:
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
def __str__(self):
|
def get_lines(self, lvl=0):
|
||||||
return 'TOC: %s --> %s'%(self.title, self.href)
|
ans = [(u'\t'*lvl) + u'TOC: %s --> %s'%(self.title, self.href)]
|
||||||
|
for child in self:
|
||||||
|
ans.extend(child.get_lines(lvl+1))
|
||||||
|
return ans
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return b'\n'.join([x.encode('utf-8') for x in self.get_lines()])
|
||||||
|
|
||||||
|
def __unicode__(self):
|
||||||
|
return u'\n'.join(self.get_lines())
|
||||||
|
|
||||||
def to_opf1(self, tour):
|
def to_opf1(self, tour):
|
||||||
for node in self.nodes:
|
for node in self.nodes:
|
||||||
|
@ -8,7 +8,7 @@ __copyright__ = '2008, Marshall T. Vandegrift <llasram@gmail.com>'
|
|||||||
|
|
||||||
from calibre.ebooks.oeb.base import XML, XHTML, XHTML_NS
|
from calibre.ebooks.oeb.base import XML, XHTML, XHTML_NS
|
||||||
from calibre.ebooks.oeb.base import XHTML_MIME, CSS_MIME
|
from calibre.ebooks.oeb.base import XHTML_MIME, CSS_MIME
|
||||||
from calibre.ebooks.oeb.base import element
|
from calibre.ebooks.oeb.base import element, XPath
|
||||||
|
|
||||||
__all__ = ['HTMLTOCAdder']
|
__all__ = ['HTMLTOCAdder']
|
||||||
|
|
||||||
@ -62,18 +62,24 @@ class HTMLTOCAdder(object):
|
|||||||
return cls(title=opts.toc_title)
|
return cls(title=opts.toc_title)
|
||||||
|
|
||||||
def __call__(self, oeb, context):
|
def __call__(self, oeb, context):
|
||||||
|
has_toc = getattr(getattr(oeb, 'toc', False), 'nodes', False)
|
||||||
|
|
||||||
if 'toc' in oeb.guide:
|
if 'toc' in oeb.guide:
|
||||||
# Ensure toc pointed to in <guide> is in spine
|
# Ensure toc pointed to in <guide> is in spine
|
||||||
from calibre.ebooks.oeb.base import urlnormalize
|
from calibre.ebooks.oeb.base import urlnormalize
|
||||||
href = urlnormalize(oeb.guide['toc'].href)
|
href = urlnormalize(oeb.guide['toc'].href)
|
||||||
if href in oeb.manifest.hrefs:
|
if href in oeb.manifest.hrefs:
|
||||||
item = oeb.manifest.hrefs[href]
|
item = oeb.manifest.hrefs[href]
|
||||||
if oeb.spine.index(item) < 0:
|
if (hasattr(item.data, 'xpath') and
|
||||||
oeb.spine.add(item, linear=False)
|
XPath('//h:a[@href]')(item.data)):
|
||||||
return
|
if oeb.spine.index(item) < 0:
|
||||||
|
oeb.spine.add(item, linear=False)
|
||||||
|
return
|
||||||
|
elif has_toc:
|
||||||
|
oeb.guide.remove('toc')
|
||||||
else:
|
else:
|
||||||
oeb.guide.remove('toc')
|
oeb.guide.remove('toc')
|
||||||
if not getattr(getattr(oeb, 'toc', False), 'nodes', False):
|
if not has_toc:
|
||||||
return
|
return
|
||||||
oeb.logger.info('Generating in-line TOC...')
|
oeb.logger.info('Generating in-line TOC...')
|
||||||
title = self.title or oeb.translate(DEFAULT_TITLE)
|
title = self.title or oeb.translate(DEFAULT_TITLE)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user