From 8cf21206df92a5e07b27ed921443f3609cbf3c73 Mon Sep 17 00:00:00 2001
From: Kip Hamiltons <48076495+KipHamiltons@users.noreply.github.com>
Date: Mon, 2 Sep 2024 08:24:52 +1000
Subject: [PATCH] Spruce up the dsl docs page. (#146)
Mostly pretty easy stuff. Opted for `rst` features instead of HTML as
well.
---
docs/dsl.rst | 37 ++++++++++++-------------------------
1 file changed, 12 insertions(+), 25 deletions(-)
diff --git a/docs/dsl.rst b/docs/dsl.rst
index 91757951..e186947b 100644
--- a/docs/dsl.rst
+++ b/docs/dsl.rst
@@ -1,4 +1,4 @@
-include .special.rst
+.. include:: .special.rst
NUClear DSL
@@ -10,18 +10,14 @@ On Statements
On statements are used by :ref:`Reactors` wishing to make subscriptions to the :ref:`PowerPlant`. Using this statement,
developers can set the conditions under which desired :ref:`Reactions` will run.
-anatomy of an on statement
+Anatomy of an on statement
--------------------------
The on statement can be seen as containing three main parts. The DSL Request, the Runtime Arguments, and the Callback.
-.. raw:: html
-
- On<...>(Runtime, ... ).then(function);
-
- DSL Request
-
-This is :red:`red !` And :blue:`this part is blue`.
+:blue:`On`\(:red:`Runtime, Args`).then(:green:`CallbackFunction`);
+:blue:`DSL Request`
+-------------------
The DSL request can be fused together through any combination of DSL words. The combination of these words will define
the kind of reaction which is being requested (for example, :ref:`Trigger` will define a reaction that should occur when
a required data type is emitted, while :ref:`Every` will define periodic reactions).
@@ -30,22 +26,18 @@ For reactions to occur, at least one Binding DSL word should be present in the D
those which are binding are: :ref:`Trigger`, :ref:`With`, :ref:`Every`, :ref:`Always`, :ref:`Startup`, :ref:`Shutdown`,
:ref:`TCP`, :ref:`UDP` and :ref:`Network`
-.. raw:: html
-
- Runtime Arguments
-
+:red:`Runtime Arguments`
+------------------------
Some DSL words will provide the ability to make changes to the system during runtime. This means that NUClear avoids
the need for a system restart should a configuration, port number, or file need to be changed while the system is
running.
From the provided DSL words, those which take runtime arguments are: :ref:`IO`, :ref:`TCP`, and :ref:`UDP`
-.. raw:: html
-
- Callback
-
+:green:`Callback`
+-----------------
Finally, the developer can define the callback which will execute when the reaction is triggered during runtime. The
-callback can be defined using a C++ lambda function.
+callback can be defined using a C++ lambda expression.
During system runtime, the argument selection for the callback works on the principle of fission, in that the arguments
provided with the callback can be deduced as needed. For example:
@@ -142,7 +134,7 @@ Always
.. doxygenstruct:: NUClear::dsl::word::Always
Watchdog
-`````````
+````````
.. doxygenstruct:: NUClear::dsl::word::Watchdog
@@ -195,14 +187,9 @@ Note that data can be emitted under varying scopes:
Local Emitting
--------------
-These emissions send data to the local instance of the NUClear powerplant. There are a number of scopes under which
+These emissions send data to the local instance of the NUClear PowerPlant. There are a number of scopes under which
these emissions can take place:
-.. todo::
-
- Trent - I need to decide and get consistent on what we will call the powerPlant. Should it be PowerPlant or
- powerPlant - what will you prefer
-
Scope::LOCAL
````````````
.. doxygenstruct:: NUClear::dsl::word::emit::Local