[rtems-central commit] applconfig: Add references for unspec interfaces

Sebastian Huber sebh at rtems.org
Thu Aug 6 13:08:54 UTC 2020


Module:    rtems-central
Branch:    master
Commit:    79684a584dce3c2c37b3579ac1809cbdffb32fbb
Changeset: http://git.rtems.org/rtems-central/commit/?id=79684a584dce3c2c37b3579ac1809cbdffb32fbb

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Thu Aug  6 15:03:36 2020 +0200

applconfig: Add references for unspec interfaces

---

 rtemsspec/applconfig.py                            | 41 +++++++++++++++++++---
 rtemsspec/tests/spec-applconfig/a.yml              |  6 ++++
 .../tests/spec-applconfig/unspec-define-2.yml      |  9 +++++
 rtemsspec/tests/spec-applconfig/unspec-define.yml  |  1 +
 rtemsspec/tests/spec-applconfig/unspec-type-2.yml  |  9 +++++
 rtemsspec/tests/spec-applconfig/unspec-type.yml    |  9 +++++
 rtemsspec/tests/test_applconfig.py                 | 12 +++++++
 7 files changed, 83 insertions(+), 4 deletions(-)

diff --git a/rtemsspec/applconfig.py b/rtemsspec/applconfig.py
index fc6f48b..f0dff59 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 514f0ce..6cbd266 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 0000000..017673b
--- /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 e5831da..766b0de 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 0000000..f34f63e
--- /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 0000000..b133d42
--- /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 5985476..08861de 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



More information about the vc mailing list