gbranden pushed a commit to branch master
in repository groff.

commit 795ca938c731373342e5cd3334761f7d4bf9b698
Author: G. Branden Robinson <g.branden.robin...@gmail.com>
AuthorDate: Sat Mar 15 15:21:59 2025 -0500

    [troff]: Implement recursive node dumping (8j/9).
    
    * src/roff/troff/node.cpp (dbreak_node::dump_node): Refactor to use new
      `dump_properties` member function of `node` base class.
    
    Changes `pline` request output as follows.
    
    -{"type": "dbreak_node", "none": {"type": "glyph_node", "diversion level": 
0, "is_special_node": false, "character": "r"}, "pre": {"type": 
"kern_pair_node", "diversion level": 0, "is_special_node": false, "amount": 
-200}, "diversion level": 0, "is_special_node": false},
    +{"type": "dbreak_node", "diversion level": 0, "is_special_node": false, 
"none": {"type": "glyph_node", "diversion level": 0, "is_special_node": false, 
"character": "r"}, "pre": {"type": "kern_pair_node", "diversion level": 0, 
"is_special_node": false, "amount": -200}},
    
    (Properties of the object of the base class are reported before those of
    the derived class.)
---
 ChangeLog               |  5 +++++
 src/roff/troff/node.cpp | 19 ++++++-------------
 2 files changed, 11 insertions(+), 13 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 68b2d7627..c18ed59fe 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2025-03-15  G. Branden Robinson <g.branden.robin...@gmail.com>
+
+       * src/roff/troff/node.cpp (dbreak_node::dump_node): Refactor to
+       use new `dump_properties` member function of `node` base class.
+
 2025-03-15  G. Branden Robinson <g.branden.robin...@gmail.com>
 
        * src/roff/troff/node.cpp (class ligature_node): Add `dump_node`
diff --git a/src/roff/troff/node.cpp b/src/roff/troff/node.cpp
index c82b02517..d0448d671 100644
--- a/src/roff/troff/node.cpp
+++ b/src/roff/troff/node.cpp
@@ -6169,7 +6169,11 @@ bool dbreak_node::is_tag()
 
 void dbreak_node::dump_node()
 {
-  fprintf(stderr, "{\"type\": \"%s\"", type());
+  fputc('{', stderr);
+  // Flush so that in case something goes wrong with property dumping,
+  // we know that we traversed to a new node.
+  fflush(stderr);
+  node::dump_properties();
   if (none != 0 /* nullptr */) {
     fputs(", \"none\": ", stderr);
     none->dump_node();
@@ -6182,18 +6186,7 @@ void dbreak_node::dump_node()
     fputs(", \"post\": ", stderr);
     post->dump_node();
   }
-  fprintf(stderr, ", \"diversion level\": %d", div_nest_level);
-  fprintf(stderr, ", \"is_special_node\": %s",
-         is_special ? "true" : "false");
-  if (push_state) {
-    fputs(", \"push_state\": ", stderr);
-    push_state->display_state();
-  }
-  if (state) {
-    fputs(", \"state\": ", stderr);
-    state->display_state();
-  }
-  fputs("}", stderr);
+  fputc('}', stderr);
   fflush(stderr);
 }
 

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

Reply via email to