mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-08 10:44:09 -04:00
Fix #2300 (Epub multilevel TOC output flawed.)
This commit is contained in:
parent
fa341347de
commit
f626ae0270
@ -646,12 +646,12 @@ class Processor(Parser):
|
|||||||
# Add level* TOC items
|
# Add level* TOC items
|
||||||
counter = 0
|
counter = 0
|
||||||
|
|
||||||
def elem_to_link(elem, href, counter):
|
def elem_to_link(elem, href, counter, look_for_link=True):
|
||||||
text = (u''.join(elem.xpath('string()'))).strip()
|
text = (u''.join(elem.xpath('string()'))).strip()
|
||||||
if not text:
|
if not text:
|
||||||
return None, None, None
|
return None, None, None
|
||||||
t = elem.xpath('descendant-or-self::a[@href]')
|
t = elem.xpath('descendant-or-self::a[@href]')
|
||||||
if t:
|
if look_for_link and t:
|
||||||
_href = 'content/' + t[0].get('href', '')
|
_href = 'content/' + t[0].get('href', '')
|
||||||
parts = _href.split('#')
|
parts = _href.split('#')
|
||||||
_href = parts[0]
|
_href = parts[0]
|
||||||
@ -670,7 +670,8 @@ class Processor(Parser):
|
|||||||
if level1:
|
if level1:
|
||||||
added = {}
|
added = {}
|
||||||
for elem in level1:
|
for elem in level1:
|
||||||
text, _href, frag = elem_to_link(elem, href, counter)
|
text, _href, frag = elem_to_link(elem, href, counter,
|
||||||
|
look_for_link=False)
|
||||||
counter += 1
|
counter += 1
|
||||||
if text:
|
if text:
|
||||||
level1_order.append(add_item(_href, frag, text, toc, type='chapter'))
|
level1_order.append(add_item(_href, frag, text, toc, type='chapter'))
|
||||||
@ -685,7 +686,8 @@ class Processor(Parser):
|
|||||||
if item in added.keys():
|
if item in added.keys():
|
||||||
level1 = added[item]
|
level1 = added[item]
|
||||||
elif item == elem and level1 is not None:
|
elif item == elem and level1 is not None:
|
||||||
text, _href, frag = elem_to_link(elem, href, counter)
|
text, _href, frag = elem_to_link(elem, href,
|
||||||
|
counter, look_for_link=False)
|
||||||
counter += 1
|
counter += 1
|
||||||
if text:
|
if text:
|
||||||
added2[elem] = \
|
added2[elem] = \
|
||||||
@ -698,7 +700,8 @@ class Processor(Parser):
|
|||||||
if item in added2.keys():
|
if item in added2.keys():
|
||||||
level2 = added2[item]
|
level2 = added2[item]
|
||||||
elif item == elem and level2 is not None:
|
elif item == elem and level2 is not None:
|
||||||
text, _href, frag = elem_to_link(elem, href, counter)
|
text, _href, frag = elem_to_link(elem, href,
|
||||||
|
counter, look_for_link=False)
|
||||||
counter += 1
|
counter += 1
|
||||||
if text:
|
if text:
|
||||||
add_item(_href, frag, text, level2, type='chapter')
|
add_item(_href, frag, text, level2, type='chapter')
|
||||||
|
Loading…
x
Reference in New Issue
Block a user