Roland Meister avatar Roland Meister committed 205b553 Merge

Merged in rolmei/sphinx-epub (pull request #126)

New option epub_tocscope

Comments (0)

Files changed (4)

    a chapter, but can be confusing because it mixes entries of differnet
    depth in one list.  The default value is ``True``.
 
+.. confval:: epub_tocscope
+
+   This setting control the scope of the epub table of contents.  The setting
+   can have the following values:
+
+   * ``'default'`` -- include all toc entries that are not hidden (default)
+   * ``'includehidden'`` -- include all toc entries
+
+   .. versionadded:: 1.2
 
 .. confval:: epub_fix_images
 

sphinx/builders/epub.py

             master_dir += '/' # XXX or os.sep?
             for item in self.refnodes:
                 item['refuri'] = master_dir + item['refuri']
-        self.refnodes.insert(0, {
+        self.toc_add_files(self.refnodes)
+
+    def toc_add_files(self, refnodes):
+        """Add the master_doc, pre and post files to a list of refnodes.
+        """
+        refnodes.insert(0, {
             'level': 1,
             'refuri': self.esc(self.config.master_doc + '.html'),
             'text': ssp(self.esc(
                     self.env.titles[self.config.master_doc].astext()))
         })
         for file, text in reversed(self.config.epub_pre_files):
-            self.refnodes.insert(0, {
+            refnodes.insert(0, {
                 'level': 1,
                 'refuri': self.esc(file),
                 'text': ssp(self.esc(text))
             })
         for file, text in self.config.epub_post_files:
-            self.refnodes.append({
+            refnodes.append({
                 'level': 1,
                 'refuri': self.esc(file),
                 'text': ssp(self.esc(text))
         """Write the metainfo file toc.ncx."""
         self.info('writing %s file...' % outname)
 
-        doctree = self.env.get_and_resolve_doctree(self.config.master_doc,
-            self, prune_toctrees=False, includehidden=False)
-        refnodes = self.get_refnodes(doctree, [])
-        if not refnodes:
+        if self.config.epub_tocscope == 'default':
+            doctree = self.env.get_and_resolve_doctree(self.config.master_doc,
+                self, prune_toctrees=False, includehidden=False)
+            refnodes = self.get_refnodes(doctree, [])
+            self.toc_add_files(refnodes)
+        else:
+            # 'includehidden'
             refnodes = self.refnodes
         navpoints = self.build_navpoints(refnodes)
         level = max(item['level'] for item in self.refnodes)
         epub_exclude_files = ([], 'env'),
         epub_tocdepth = (3, 'env'),
         epub_tocdup = (True, 'env'),
+        epub_tocscope = ('default', 'env'),
         epub_fix_images = (False, 'env'),
         epub_max_image_width = (0, 'env'),
         epub_show_urls = ('inline', 'html'),

sphinx/quickstart.py

 # Allow duplicate toc entries.
 #epub_tocdup = True
 
+# Choose between 'default' and 'includehidden'.
+#epub_tocscope = 'default'
+
 # Fix unsupported image types using the PIL.
 #epub_fix_images = False
 
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.