diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2023-11-21 11:13:15 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2023-11-21 11:15:24 +0100 |
commit | 07aaa327e54123c2c9852a650fd9db598c3dc11a (patch) | |
tree | d28544cc8d957878548aed371029a5661358a337 /rtemsspec | |
parent | 2dd0243d5d8162d99e9a1ad0b647dc53aaa10112 (diff) |
sphinxcontent: Add SphinxContent.label_scope()
Diffstat (limited to 'rtemsspec')
-rw-r--r-- | rtemsspec/sphinxcontent.py | 7 | ||||
-rw-r--r-- | rtemsspec/tests/test_content_sphinx.py | 12 |
2 files changed, 19 insertions, 0 deletions
diff --git a/rtemsspec/sphinxcontent.py b/rtemsspec/sphinxcontent.py index c47ea68e..12497ccc 100644 --- a/rtemsspec/sphinxcontent.py +++ b/rtemsspec/sphinxcontent.py @@ -113,6 +113,13 @@ class SphinxContent(Content): """ Pops the top from the label stack. """ self._label_stack.pop() + @contextmanager + def label_scope(self, label: str) -> Iterator[None]: + """ Opens a label scope context. """ + self.push_label(label) + yield + self.pop_label() + def add_label(self, label: str) -> None: """ Adds a label. """ self.add(".. _" + label.strip() + ":") diff --git a/rtemsspec/tests/test_content_sphinx.py b/rtemsspec/tests/test_content_sphinx.py index 00be7a5f..e6bbd4bf 100644 --- a/rtemsspec/tests/test_content_sphinx.py +++ b/rtemsspec/tests/test_content_sphinx.py @@ -40,6 +40,18 @@ def test_add_label(): """ +def test_label_scope(): + content = SphinxContent() + with content.label_scope("x"): + with content.section("y"): + pass + assert str(content) == """.. _xY: + +y += +""" + + def test_directive(): content = SphinxContent() with content.directive("x"): |