summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2020-08-06 15:03:36 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2020-08-06 15:08:23 +0200
commit79684a584dce3c2c37b3579ac1809cbdffb32fbb (patch)
treeaabe55f2beb45593b0c1085f5b3ac98379c6183d
parentspec: Add references for some C types and defines (diff)
downloadrtems-central-79684a584dce3c2c37b3579ac1809cbdffb32fbb.tar.bz2
applconfig: Add references for unspec interfaces
-rw-r--r--rtemsspec/applconfig.py41
-rw-r--r--rtemsspec/tests/spec-applconfig/a.yml6
-rw-r--r--rtemsspec/tests/spec-applconfig/unspec-define-2.yml9
-rw-r--r--rtemsspec/tests/spec-applconfig/unspec-define.yml1
-rw-r--r--rtemsspec/tests/spec-applconfig/unspec-type-2.yml9
-rw-r--r--rtemsspec/tests/spec-applconfig/unspec-type.yml9
-rw-r--r--rtemsspec/tests/test_applconfig.py12
7 files changed, 83 insertions, 4 deletions
diff --git a/rtemsspec/applconfig.py b/rtemsspec/applconfig.py
index fc6f48bd..f0dff59c 100644
--- a/rtemsspec/applconfig.py
+++ b/rtemsspec/applconfig.py
@@ -362,6 +362,22 @@ def _get_value_sphinx_type(ctx: ItemGetValueContext) -> Any:
return f":c:type:`{ctx.value[ctx.key]}`"
+def _get_value_sphinx_url(ctx: ItemGetValueContext) -> Any:
+ return f"`{ctx.value[ctx.key]} <{ctx.item['reference']}>`_"
+
+
+def _get_value_sphinx_unspecified_define(ctx: ItemGetValueContext) -> Any:
+ if ctx.item["reference"]:
+ return _get_value_sphinx_url(ctx)
+ return _get_value_sphinx_define(ctx)
+
+
+def _get_value_sphinx_unspecified_type(ctx: ItemGetValueContext) -> Any:
+ if ctx.item["reference"]:
+ return _get_value_sphinx_url(ctx)
+ return _get_value_sphinx_type(ctx)
+
+
def _add_sphinx_get_values(mapper: ItemMapper) -> None:
for key in _SPHINX_DOC_REFS:
for opt in ["feature-enable", "feature", "initializer", "integer"]:
@@ -377,11 +393,11 @@ def _add_sphinx_get_values(mapper: ItemMapper) -> None:
mapper.add_get_value("interface/typedef:/name", _get_value_sphinx_type)
mapper.add_get_value("interface/union:/name", _get_value_sphinx_type)
mapper.add_get_value("interface/unspecified-define:/name",
- _get_value_sphinx_define)
+ _get_value_sphinx_unspecified_define)
mapper.add_get_value("interface/unspecified-function:/name",
_get_value_sphinx_function)
mapper.add_get_value("interface/unspecified-type:/name",
- _get_value_sphinx_type)
+ _get_value_sphinx_unspecified_type)
def _c_user_ref(ref: str, name: str) -> str:
@@ -448,6 +464,22 @@ def _get_value_doxygen_reference(ctx: ItemGetValueContext) -> Any:
return _DOXYGEN_DOC_REFS[ctx.key]
+def _get_value_doxygen_url(ctx: ItemGetValueContext) -> Any:
+ return f"<a href=\"{ctx.item['reference']}\">{ctx.value[ctx.key]}</a>"
+
+
+def _get_value_doxygen_unspecfied_define(ctx: ItemGetValueContext) -> Any:
+ if ctx.item["reference"]:
+ return _get_value_doxygen_url(ctx)
+ return get_value_hash(ctx)
+
+
+def _get_value_doxygen_unspecfied_type(ctx: ItemGetValueContext) -> Any:
+ if ctx.item["reference"]:
+ return _get_value_doxygen_url(ctx)
+ return get_value_double_colon(ctx)
+
+
def _add_doxygen_get_values(mapper: ItemMapper) -> None:
for key in _DOXYGEN_DOC_REFS:
for opt in ["feature-enable", "feature", "initializer", "integer"]:
@@ -464,11 +496,12 @@ def _add_doxygen_get_values(mapper: ItemMapper) -> None:
mapper.add_get_value("interface/struct:/name", get_value_double_colon)
mapper.add_get_value("interface/typedef:/name", get_value_double_colon)
mapper.add_get_value("interface/union:/name", get_value_double_colon)
- mapper.add_get_value("interface/unspecified-define:/name", get_value_hash)
+ mapper.add_get_value("interface/unspecified-define:/name",
+ _get_value_doxygen_unspecfied_define)
mapper.add_get_value("interface/unspecified-function:/name",
get_value_doxygen_function)
mapper.add_get_value("interface/unspecified-type:/name",
- get_value_double_colon)
+ _get_value_doxygen_unspecfied_type)
def generate(config: dict, item_cache: ItemCache) -> None:
diff --git a/rtemsspec/tests/spec-applconfig/a.yml b/rtemsspec/tests/spec-applconfig/a.yml
index 514f0ce7..6cbd2668 100644
--- a/rtemsspec/tests/spec-applconfig/a.yml
+++ b/rtemsspec/tests/spec-applconfig/a.yml
@@ -20,6 +20,12 @@ notes: |
* ${define:/name}
* ${unspec-define:/name}
+
+ * ${unspec-define-2:/name}
+
+ * ${unspec-type:/name}
+
+ * ${unspec-type-2:/name}
appl-config-option-type: feature
copyrights:
- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
diff --git a/rtemsspec/tests/spec-applconfig/unspec-define-2.yml b/rtemsspec/tests/spec-applconfig/unspec-define-2.yml
new file mode 100644
index 00000000..017673b5
--- /dev/null
+++ b/rtemsspec/tests/spec-applconfig/unspec-define-2.yml
@@ -0,0 +1,9 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+interface-type: unspecified-define
+links: []
+name: UNSPEC_DEFINE_2
+reference: https://foo
+type: interface
diff --git a/rtemsspec/tests/spec-applconfig/unspec-define.yml b/rtemsspec/tests/spec-applconfig/unspec-define.yml
index e5831da4..766b0dec 100644
--- a/rtemsspec/tests/spec-applconfig/unspec-define.yml
+++ b/rtemsspec/tests/spec-applconfig/unspec-define.yml
@@ -5,4 +5,5 @@ enabled-by: true
interface-type: unspecified-define
links: []
name: UNSPEC_DEFINE
+reference: null
type: interface
diff --git a/rtemsspec/tests/spec-applconfig/unspec-type-2.yml b/rtemsspec/tests/spec-applconfig/unspec-type-2.yml
new file mode 100644
index 00000000..f34f63ea
--- /dev/null
+++ b/rtemsspec/tests/spec-applconfig/unspec-type-2.yml
@@ -0,0 +1,9 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+interface-type: unspecified-type
+links: []
+name: unspec_type_2
+reference: https://bar
+type: interface
diff --git a/rtemsspec/tests/spec-applconfig/unspec-type.yml b/rtemsspec/tests/spec-applconfig/unspec-type.yml
new file mode 100644
index 00000000..b133d429
--- /dev/null
+++ b/rtemsspec/tests/spec-applconfig/unspec-type.yml
@@ -0,0 +1,9 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+interface-type: unspecified-type
+links: []
+name: unspec_type
+reference: null
+type: interface
diff --git a/rtemsspec/tests/test_applconfig.py b/rtemsspec/tests/test_applconfig.py
index 59854761..08861def 100644
--- a/rtemsspec/tests/test_applconfig.py
+++ b/rtemsspec/tests/test_applconfig.py
@@ -90,6 +90,12 @@ NOTES:
* :c:macro:`UNSPEC_DEFINE`
+ * `UNSPEC_DEFINE_2 <https://foo>`_
+
+ * :c:type:`unspec_type`
+
+ * `unspec_type_2 <https://bar>`_
+
.. index:: b
.. _b:
@@ -432,6 +438,12 @@ NOTES:
* * #DEFINE
*
* * #UNSPEC_DEFINE
+ *
+ * * <a href="https://foo">UNSPEC_DEFINE_2</a>
+ *
+ * * ::unspec_type
+ *
+ * * <a href="https://bar">unspec_type_2</a>
* @endparblock
*/
#define a