diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2021-01-20 06:49:53 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2021-02-01 06:59:01 +0100 |
commit | 50541ae9da953159535793bdc113e45d81341a91 (patch) | |
tree | 12f1bb0ea15eac195cf8acdf5cd600bd813ac795 | |
parent | interfacedoc: Only reference documented interfaces (diff) | |
download | rtems-central-50541ae9da953159535793bdc113e45d81341a91.tar.bz2 |
content: Add interface group references
-rw-r--r-- | rtemsspec/applconfig.py | 3 | ||||
-rw-r--r-- | rtemsspec/content.py | 5 | ||||
-rw-r--r-- | rtemsspec/interface.py | 4 | ||||
-rw-r--r-- | rtemsspec/interfacedoc.py | 8 | ||||
-rw-r--r-- | rtemsspec/tests/spec-interface/func.yml | 4 | ||||
-rw-r--r-- | rtemsspec/tests/test_interface.py | 4 | ||||
-rw-r--r-- | rtemsspec/tests/test_interfacedoc.py | 3 |
7 files changed, 23 insertions, 8 deletions
diff --git a/rtemsspec/applconfig.py b/rtemsspec/applconfig.py index 6e3691ce..c25503e7 100644 --- a/rtemsspec/applconfig.py +++ b/rtemsspec/applconfig.py @@ -28,7 +28,7 @@ import copy from typing import Any, Dict, List, Optional from rtemsspec.content import CContent, get_value_double_colon, \ - get_value_doxygen_function, get_value_hash + get_value_doxygen_function, get_value_doxygen_group, get_value_hash from rtemsspec.sphinxcontent import SphinxContent, SphinxMapper from rtemsspec.items import EmptyItem, Item, ItemCache, ItemGetValueContext, \ ItemMapper @@ -449,6 +449,7 @@ def _add_doxygen_get_values(mapper: ItemMapper) -> None: mapper.add_get_value("interface/define:/name", get_value_hash) mapper.add_get_value("interface/function:/name", get_value_doxygen_function) + mapper.add_get_value("interface/group:/name", get_value_doxygen_group) mapper.add_get_value("interface/macro:/name", get_value_doxygen_function) mapper.add_get_value("interface/struct:/name", get_value_double_colon) mapper.add_get_value("interface/typedef:/name", get_value_double_colon) diff --git a/rtemsspec/content.py b/rtemsspec/content.py index f3729584..616a7a18 100644 --- a/rtemsspec/content.py +++ b/rtemsspec/content.py @@ -967,6 +967,11 @@ def get_value_doxygen_function(ctx: ItemGetValueContext) -> Any: return f"{ctx.value[ctx.key]}()" +def get_value_doxygen_group(ctx: ItemGetValueContext) -> Any: + """ Gets a value as a group reference for Doxygen markup. """ + return f"@ref {ctx.value['identifier']}" + + def get_value_double_colon(ctx: ItemGetValueContext) -> Any: """ Gets a value with a :: prefix. """ return f"::{ctx.value[ctx.key]}" diff --git a/rtemsspec/interface.py b/rtemsspec/interface.py index d796e2eb..7adf63aa 100644 --- a/rtemsspec/interface.py +++ b/rtemsspec/interface.py @@ -30,7 +30,7 @@ from typing import Any, Callable, Dict, Iterator, List, Union, Set from rtemsspec.content import CContent, CInclude, enabled_by_to_exp, \ ExpressionMapper, get_value_double_colon, get_value_doxygen_function, \ - get_value_hash + get_value_doxygen_group, get_value_hash from rtemsspec.items import Item, ItemCache, ItemGetValueContext, \ ItemGetValueMap, ItemMapper @@ -82,6 +82,8 @@ class _InterfaceMapper(ItemMapper): get_value_double_colon) self.add_get_value("interface/define/doc:/name", get_value_hash) self.add_get_value("interface/enum/doc:/name", get_value_hash) + self.add_get_value("interface/group/doc:/name", + get_value_doxygen_group) self.add_get_value("interface/macro/doc:/name", get_value_doxygen_function) self.add_get_value("interface/macro/doc:/params/name", diff --git a/rtemsspec/interfacedoc.py b/rtemsspec/interfacedoc.py index 9820070e..59a51993 100644 --- a/rtemsspec/interfacedoc.py +++ b/rtemsspec/interfacedoc.py @@ -73,8 +73,9 @@ class _Mapper(SphinxMapper): super().__init__(item) self._group_uids = set(group_uids) self.add_get_value("interface/function:/name", self._get_function) - self.add_get_value("interface/macro:/name", self._get_function) self.add_get_value("interface/function:/params/name", _get_param) + self.add_get_value("interface/group:/name", self._get_group) + self.add_get_value("interface/macro:/name", self._get_function) self.add_get_value("interface/macro:/params/name", _get_param) def _get_function(self, ctx: ItemGetValueContext) -> Any: @@ -84,6 +85,11 @@ class _Mapper(SphinxMapper): return _get_reference(name) return f":c:func:`{name}`" + def _get_group(self, ctx: ItemGetValueContext) -> Any: + if ctx.item.uid in self._group_uids: + return get_reference(ctx.value["identifier"]) + return ctx.value[ctx.key] + def _generate_introduction(target: str, group: Item, items: List[Item]) -> None: diff --git a/rtemsspec/tests/spec-interface/func.yml b/rtemsspec/tests/spec-interface/func.yml index 25a23b3b..422a3a7c 100644 --- a/rtemsspec/tests/spec-interface/func.yml +++ b/rtemsspec/tests/spec-interface/func.yml @@ -16,8 +16,8 @@ definition: description: | Function description. References to ${func2:/name}, ${td:/name}, ${enum:/name}, ${define:/name}, ${macro:/name}, ${var:/name}, - ${enumerator-0:/name}, ${s:/name}, ${option:/name}, and ${option:/type}. - Second parameter is ${.:/params[1]/name}. + ${enumerator-0:/name}, ${s:/name}, ${option:/name}, ${option:/type}, + ${ga:/name}, and ${gf:/name}. Second parameter is ${.:/params[1]/name}. .. code-block: diff --git a/rtemsspec/tests/test_interface.py b/rtemsspec/tests/test_interface.py index 0519eb24..2ca9623f 100644 --- a/rtemsspec/tests/test_interface.py +++ b/rtemsspec/tests/test_interface.py @@ -208,8 +208,8 @@ typedef enum EnumB { * @brief Function brief description. * * Function description. References to VeryLongFunction(), ::Integer, #Enum, - * #DEFINE, VERY_LONG_MACRO(), #Variable, ::ENUMERATOR_0, Struct, #a, and - * interface. Second parameter is ``Param1``. + * #DEFINE, VERY_LONG_MACRO(), #Variable, ::ENUMERATOR_0, Struct, #a, + * interface, @ref GroupA, and @ref GroupF. Second parameter is ``Param1``. * * @code * these two lines diff --git a/rtemsspec/tests/test_interfacedoc.py b/rtemsspec/tests/test_interfacedoc.py index b060cf06..0ead530b 100644 --- a/rtemsspec/tests/test_interfacedoc.py +++ b/rtemsspec/tests/test_interfacedoc.py @@ -454,7 +454,8 @@ Function brief description. Function description. References to :ref:`InterfaceVeryLongFunction`, :c:type:`Integer`, :c:type:`Enum`, :c:macro:`DEFINE`, :ref:`InterfaceVERYLONGMACRO`, Variable, :c:macro:`ENUMERATOR_0`, -:c:type:`Struct`, :ref:`a`, and interface. Second parameter is ``Param1``. +:c:type:`Struct`, :ref:`a`, interface, :ref:`GroupA`, and Group F. Second +parameter is ``Param1``. .. code-block: |