mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
epub: Do not count up tocid on creating nav.xhtml
This commit is contained in:
parent
ad317483d2
commit
bbd52dd347
@ -149,7 +149,6 @@ class Epub3Builder(EpubBuilder):
|
|||||||
# type: (nodes.Node, int, bool) -> unicode
|
# type: (nodes.Node, int, bool) -> unicode
|
||||||
"""Create a new entry in the toc from the node at given level."""
|
"""Create a new entry in the toc from the node at given level."""
|
||||||
# XXX Modifies the node
|
# XXX Modifies the node
|
||||||
self.tocid += 1
|
|
||||||
node['indent'] = self.navlist_indent * level
|
node['indent'] = self.navlist_indent * level
|
||||||
if has_child:
|
if has_child:
|
||||||
return self.navlist_template_has_child % node
|
return self.navlist_template_has_child % node
|
||||||
|
@ -21,6 +21,8 @@ class EPUBElementTree(object):
|
|||||||
'dc': 'http://purl.org/dc/elements/1.1/',
|
'dc': 'http://purl.org/dc/elements/1.1/',
|
||||||
'ibooks': 'http://vocabulary.itunes.apple.com/rdf/ibooks/vocabulary-extensions-1.0/',
|
'ibooks': 'http://vocabulary.itunes.apple.com/rdf/ibooks/vocabulary-extensions-1.0/',
|
||||||
'ncx': 'http://www.daisy.org/z3986/2005/ncx/',
|
'ncx': 'http://www.daisy.org/z3986/2005/ncx/',
|
||||||
|
'xhtml': 'http://www.w3.org/1999/xhtml',
|
||||||
|
'epub': 'http://www.idpf.org/2007/ops'
|
||||||
}
|
}
|
||||||
|
|
||||||
def __init__(self, tree):
|
def __init__(self, tree):
|
||||||
@ -69,7 +71,7 @@ def test_build_epub(app):
|
|||||||
# toc.ncx / navMap
|
# toc.ncx / navMap
|
||||||
navpoints = toc.findall("./ncx:navMap/ncx:navPoint")
|
navpoints = toc.findall("./ncx:navMap/ncx:navPoint")
|
||||||
assert len(navpoints) == 1
|
assert len(navpoints) == 1
|
||||||
assert navpoints[0].attrib == {'id': 'navPoint2', 'playOrder': '1'}
|
assert navpoints[0].attrib == {'id': 'navPoint1', 'playOrder': '1'}
|
||||||
assert navpoints[0].find("./ncx:content").attrib == {'src': 'index.xhtml'}
|
assert navpoints[0].find("./ncx:content").attrib == {'src': 'index.xhtml'}
|
||||||
|
|
||||||
navlabel = navpoints[0].find("./ncx:navLabel/ncx:text")
|
navlabel = navpoints[0].find("./ncx:navLabel/ncx:text")
|
||||||
@ -127,6 +129,20 @@ def test_build_epub(app):
|
|||||||
assert reference.get('title') == 'Table of Contents'
|
assert reference.get('title') == 'Table of Contents'
|
||||||
assert reference.get('href') == 'index.xhtml'
|
assert reference.get('href') == 'index.xhtml'
|
||||||
|
|
||||||
|
# nav.xhtml
|
||||||
|
nav = EPUBElementTree.fromstring((app.outdir / 'nav.xhtml').text())
|
||||||
|
assert nav.attrib == {'lang': 'en',
|
||||||
|
'{http://www.w3.org/XML/1998/namespace}lang': 'en'}
|
||||||
|
assert nav.find("./xhtml:head/xhtml:title").text == 'Table of Contents'
|
||||||
|
|
||||||
|
# nav.xhtml / nav
|
||||||
|
navlist = nav.find("./xhtml:body/xhtml:nav")
|
||||||
|
toc = navlist.findall("./xhtml:ol/xhtml:li")
|
||||||
|
assert navlist.find("./xhtml:h1").text == 'Table of Contents'
|
||||||
|
assert len(toc) == 1
|
||||||
|
assert toc[0].find("./xhtml:a").get("href") == 'index.xhtml'
|
||||||
|
assert toc[0].find("./xhtml:a").text == 'The basic Sphinx documentation for testing'
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.sphinx('epub', testroot='footnotes',
|
@pytest.mark.sphinx('epub', testroot='footnotes',
|
||||||
confoverrides={'epub_cover': ('_images/rimg.png', None)})
|
confoverrides={'epub_cover': ('_images/rimg.png', None)})
|
||||||
@ -158,15 +174,39 @@ def test_nested_toc(app):
|
|||||||
|
|
||||||
navpoints = toc.findall("./ncx:navMap/ncx:navPoint")
|
navpoints = toc.findall("./ncx:navMap/ncx:navPoint")
|
||||||
assert len(navpoints) == 4
|
assert len(navpoints) == 4
|
||||||
assert navinfo(navpoints[0]) == ('navPoint9', '1', 'index.xhtml',
|
assert navinfo(navpoints[0]) == ('navPoint1', '1', 'index.xhtml',
|
||||||
"Welcome to Sphinx Tests's documentation!")
|
"Welcome to Sphinx Tests's documentation!")
|
||||||
assert navpoints[0].findall("./ncx:navPoint") == []
|
assert navpoints[0].findall("./ncx:navPoint") == []
|
||||||
|
|
||||||
# toc.ncx / nested navPoints
|
# toc.ncx / nested navPoints
|
||||||
assert navinfo(navpoints[1]) == ('navPoint10', '2', 'foo.xhtml', 'foo')
|
assert navinfo(navpoints[1]) == ('navPoint2', '2', 'foo.xhtml', 'foo')
|
||||||
navchildren = navpoints[1].findall("./ncx:navPoint")
|
navchildren = navpoints[1].findall("./ncx:navPoint")
|
||||||
assert len(navchildren) == 4
|
assert len(navchildren) == 4
|
||||||
assert navinfo(navchildren[0]) == ('navPoint11', '2', 'foo.xhtml', 'foo')
|
assert navinfo(navchildren[0]) == ('navPoint3', '2', 'foo.xhtml', 'foo')
|
||||||
assert navinfo(navchildren[1]) == ('navPoint12', '3', 'quux.xhtml', 'quux')
|
assert navinfo(navchildren[1]) == ('navPoint4', '3', 'quux.xhtml', 'quux')
|
||||||
assert navinfo(navchildren[2]) == ('navPoint13', '4', 'foo.xhtml#foo-1', 'foo.1')
|
assert navinfo(navchildren[2]) == ('navPoint5', '4', 'foo.xhtml#foo-1', 'foo.1')
|
||||||
assert navinfo(navchildren[3]) == ('navPoint16', '6', 'foo.xhtml#foo-2', 'foo.2')
|
assert navinfo(navchildren[3]) == ('navPoint8', '6', 'foo.xhtml#foo-2', 'foo.2')
|
||||||
|
|
||||||
|
# nav.xhtml / nav
|
||||||
|
def navinfo(elem):
|
||||||
|
anchor = elem.find("./xhtml:a")
|
||||||
|
return (anchor.get('href'), anchor.text)
|
||||||
|
|
||||||
|
nav = EPUBElementTree.fromstring((app.outdir / 'nav.xhtml').text())
|
||||||
|
toc = nav.findall("./xhtml:body/xhtml:nav/xhtml:ol/xhtml:li")
|
||||||
|
assert len(toc) == 4
|
||||||
|
assert navinfo(toc[0]) == ('index.xhtml',
|
||||||
|
"Welcome to Sphinx Tests's documentation!")
|
||||||
|
assert toc[0].findall("./xhtml:ol") == []
|
||||||
|
|
||||||
|
# nav.xhtml / nested toc
|
||||||
|
assert navinfo(toc[1]) == ('foo.xhtml', 'foo')
|
||||||
|
tocchildren = toc[1].findall("./xhtml:ol/xhtml:li")
|
||||||
|
assert len(tocchildren) == 3
|
||||||
|
assert navinfo(tocchildren[0]) == ('quux.xhtml', 'quux')
|
||||||
|
assert navinfo(tocchildren[1]) == ('foo.xhtml#foo-1', 'foo.1')
|
||||||
|
assert navinfo(tocchildren[2]) == ('foo.xhtml#foo-2', 'foo.2')
|
||||||
|
|
||||||
|
grandchild = tocchildren[1].findall("./xhtml:ol/xhtml:li")
|
||||||
|
assert len(grandchild) == 1
|
||||||
|
assert navinfo(grandchild[0]) == ('foo.xhtml#foo-1-1', 'foo.1-1')
|
||||||
|
Loading…
Reference in New Issue
Block a user