summaryrefslogtreecommitdiff
path: root/rtemsspec
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2023-11-21 11:13:15 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2023-11-21 11:15:24 +0100
commit07aaa327e54123c2c9852a650fd9db598c3dc11a (patch)
treed28544cc8d957878548aed371029a5661358a337 /rtemsspec
parent2dd0243d5d8162d99e9a1ad0b647dc53aaa10112 (diff)
sphinxcontent: Add SphinxContent.label_scope()
Diffstat (limited to 'rtemsspec')
-rw-r--r--rtemsspec/sphinxcontent.py7
-rw-r--r--rtemsspec/tests/test_content_sphinx.py12
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"):