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