mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
Add a class option to the toctree directive (#12524)
Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com>
This commit is contained in:
parent
c67ef51df9
commit
a95d716f7f
@ -56,6 +56,8 @@ Features added
|
||||
|
||||
* #12258: Support ``typing_extensions.Unpack``
|
||||
Patch by Bénédikt Tran and Adam Turner.
|
||||
* #12524: Add a ``class`` option to the :rst:dir:`toctree` directive.
|
||||
Patch by Tim Hoffmann.
|
||||
|
||||
Bugs fixed
|
||||
----------
|
||||
|
@ -380,6 +380,12 @@ Docutils supports the following directives:
|
||||
When the default domain contains a ``class`` directive, this directive
|
||||
will be shadowed. Therefore, Sphinx re-exports it as ``rst-class``.
|
||||
|
||||
.. tip::
|
||||
|
||||
If you want to add a class to a directive,
|
||||
you may consider the ``:class:`` :dudir:`option <common-options>` instead,
|
||||
which is supported by most directives and allows for a more compact notation.
|
||||
|
||||
* HTML specifics:
|
||||
|
||||
- :dudir:`meta`
|
||||
|
@ -124,6 +124,14 @@ tables of contents. The ``toctree`` directive is the central element.
|
||||
|
||||
foo
|
||||
|
||||
As with :dudir:`most directives <common-options>`,
|
||||
you can use the ``class`` option to assign `class attributes`_::
|
||||
|
||||
.. toctree::
|
||||
:class: custom-toc
|
||||
|
||||
.. _class attributes: https://docutils.sourceforge.io/docs/ref/doctree.html#classes
|
||||
|
||||
If you want only the titles of documents in the tree to show up, not other
|
||||
headings of the same level, you can use the ``titlesonly`` option::
|
||||
|
||||
|
@ -53,6 +53,7 @@ class TocTree(SphinxDirective):
|
||||
option_spec = {
|
||||
'maxdepth': int,
|
||||
'name': directives.unchanged,
|
||||
'class': directives.class_option,
|
||||
'caption': directives.unchanged_required,
|
||||
'glob': directives.flag,
|
||||
'hidden': directives.flag,
|
||||
@ -78,7 +79,9 @@ class TocTree(SphinxDirective):
|
||||
subnode['numbered'] = self.options.get('numbered', 0)
|
||||
subnode['titlesonly'] = 'titlesonly' in self.options
|
||||
self.set_source_info(subnode)
|
||||
wrappernode = nodes.compound(classes=['toctree-wrapper'])
|
||||
wrappernode = nodes.compound(
|
||||
classes=['toctree-wrapper', *self.options.get('class', ())],
|
||||
)
|
||||
wrappernode.append(subnode)
|
||||
self.add_name(wrappernode)
|
||||
|
||||
|
@ -136,6 +136,18 @@ def test_reversed_toctree(app):
|
||||
includefiles=['baz', 'bar/index', 'foo'])
|
||||
|
||||
|
||||
@pytest.mark.sphinx(testroot='toctree-glob')
|
||||
def test_toctree_class(app):
|
||||
text = ('.. toctree::\n'
|
||||
' :class: custom-toc\n'
|
||||
'\n'
|
||||
' foo\n')
|
||||
app.env.find_files(app.config, app.builder)
|
||||
doctree = restructuredtext.parse(app, text, 'index')
|
||||
assert_node(doctree, [nodes.document, nodes.compound, addnodes.toctree])
|
||||
assert doctree[0].attributes['classes'] == ['toctree-wrapper', 'custom-toc']
|
||||
|
||||
|
||||
@pytest.mark.sphinx(testroot='toctree-glob')
|
||||
def test_toctree_twice(app):
|
||||
text = (".. toctree::\n"
|
||||
|
Loading…
Reference in New Issue
Block a user