gbranden pushed a commit to branch master
in repository groff.

commit cdb50249e92622a7f34e04b180d80059847b1edd
Author: G. Branden Robinson <g.branden.robin...@gmail.com>
AuthorDate: Mon Mar 3 03:49:06 2025 -0600

    [troff]: Implement recursive node dumping (5m/9).
    
    * src/roff/troff/node.h (class device_extension_node): Specialize
      {override} `dump_properties()` for this class.
    
    * src/roff/troff/node.cpp (device_extension_node::dump_properties): New
      member function reports values of `tfont`, `stroke_color`, and
      `fill_color` properties.
    
    Changes `pline` request output as follows.
    
    -{"type": "device_extension_node", "diversion level": 0, "is_special_node": 
true},
    +{"type": "device_extension_node", "diversion level": 0, "is_special_node": 
true, "tfont": "TR", "stroke_color": "default", "fill_color": "default"},
---
 ChangeLog               |  9 +++++++++
 src/roff/troff/node.cpp | 13 +++++++++++++
 src/roff/troff/node.h   |  1 +
 3 files changed, 23 insertions(+)

diff --git a/ChangeLog b/ChangeLog
index 797fe7104..7928e4771 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2025-03-03  G. Branden Robinson <g.branden.robin...@gmail.com>
+
+       * src/roff/troff/node.h (class device_extension_node):
+       Specialize {override} `dump_properties()` for this class.
+       * src/roff/troff/node.cpp
+       (device_extension_node::dump_properties): New member function
+       reports values of `tfont`, `stroke_color`, and `fill_color`
+       properties.
+
 2025-03-03  G. Branden Robinson <g.branden.robin...@gmail.com>
 
        * src/roff/troff/node.h (class bracket_node): Specialize
diff --git a/src/roff/troff/node.cpp b/src/roff/troff/node.cpp
index 51dfb458a..83df3e903 100644
--- a/src/roff/troff/node.cpp
+++ b/src/roff/troff/node.cpp
@@ -4073,6 +4073,19 @@ device_extension_node::device_extension_node(const macro 
&m, tfont *t,
 {
 }
 
+void device_extension_node::dump_properties()
+{
+  node::dump_properties();
+  // TODO: Implement `macro::dump()` and call it on `mac` from here.
+  fputs(", \"tfont\": ", stderr);
+  tf->get_name().json_dump();
+  fputs(", \"stroke_color\": ", stderr);
+  gcol->nm.json_dump();
+  fputs(", \"fill_color\": ", stderr);
+  fcol->nm.json_dump();
+  fflush(stderr);
+}
+
 bool device_extension_node::is_same_as(node *n)
 {
   return ((mac == static_cast<device_extension_node *>(n)->mac)
diff --git a/src/roff/troff/node.h b/src/roff/troff/node.h
index 3a3f85f1d..f4a527999 100644
--- a/src/roff/troff/node.h
+++ b/src/roff/troff/node.h
@@ -594,6 +594,7 @@ public:
   bool is_tag();
   int ends_sentence();
   tfont *get_tfont();
+  void dump_properties();
 };
 
 class suppress_node : public node {

_______________________________________________
groff-commit mailing list
groff-commit@gnu.org
https://lists.gnu.org/mailman/listinfo/groff-commit

Reply via email to