diff options
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"): |