gbranden pushed a commit to branch master
in repository groff.

commit 19a18bac52a9685bdc4a08ef1b24c22095da39ee
Author: G. Branden Robinson <g.branden.robin...@gmail.com>
AuthorDate: Thu May 9 19:06:31 2024 -0500

    [troff]: Make `dbreak_node` class dump more info.
    
    * src/roff/troff/node.cpp (class dbreak_node): Add `dump_node` member
      function, overriding virtual function in `node` base class.
    
      (dbreak_node::dump_node): Disclose more information, namely the
      contents of any defined glyph nodes within.
    
    Now we can see where the missing "i" in "anti-" went.
    
    $ ./build/test-groff -Wbreak -Tutf8 EXPERIMENTS/hyphenated-dummy.groff
    {type: line_start_node, diversion level: 0},
    {type: hyphen_inhibitor_node, diversion level: 0},
    {type: glyph_node, character: "a", diversion level: 0},
    {type: glyph_node, character: "n", diversion level: 0},
    {type: glyph_node, character: "t", diversion level: 0},
    {type: dbreak_node,  diversion level: 0, none: {type: glyph_node, 
character: "i", diversion level: 0}, pre: {type: glyph_node, character: "\hy", 
diversion level: 0}},
    {type: glyph_node, character: "d", diversion level: 0},
    {type: glyph_node, character: "i", diversion level: 0},
    {type: glyph_node, character: "s", diversion level: 0}
    {type: glyph_node, character: "i", diversion level: 0},
    {type: glyph_node, character: "s", diversion level: 0},
    {type: glyph_node, character: "m", diversion level: 0}
    anti‐
    disestablishmen‐
    tarian‐
    ism
---
 ChangeLog               |  8 ++++++++
 src/roff/troff/node.cpp | 25 +++++++++++++++++++++++++
 2 files changed, 33 insertions(+)

diff --git a/ChangeLog b/ChangeLog
index 94c0b186e..babfd8e00 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2024-05-09  G. Branden Robinson <g.branden.robin...@gmail.com>
+
+       * src/roff/troff/node.cpp (class dbreak_node): Add `dump_node`
+       member function, overriding virtual function in `node` base
+       class.
+       (dbreak_node::dump_node): Disclose more information, namely the
+       contents of any defined glyph nodes within.
+
 2024-05-09  G. Branden Robinson <g.branden.robin...@gmail.com>
 
        * src/roff/troff/node.cpp (glyph_node::dump_node)
diff --git a/src/roff/troff/node.cpp b/src/roff/troff/node.cpp
index d420490fd..b686b3b77 100644
--- a/src/roff/troff/node.cpp
+++ b/src/roff/troff/node.cpp
@@ -1992,6 +1992,7 @@ public:
   const char *type();
   int force_tprint();
   bool is_tag();
+  void dump_node();
 };
 
 void *ligature_node::operator new(size_t n)
@@ -5784,6 +5785,30 @@ bool dbreak_node::is_tag()
   return false;
 }
 
+void dbreak_node::dump_node()
+{
+  fprintf(stderr, "{type: %s, ", type());
+  if (push_state)
+    fprintf(stderr, "<push_state>, ");
+  if (state)
+    fprintf(stderr, "<state>, ");
+  fprintf(stderr, " diversion level: %d", div_nest_level);
+  if (none != 0 /* nullptr */) {
+    fputs(", none: ", stderr);
+    none->dump_node();
+  }
+  if (pre != 0 /* nullptr */) {
+    fputs(", pre: ", stderr);
+    pre->dump_node();
+  }
+  if (post != 0 /* nullptr */) {
+    fputs(", post: ", stderr);
+    post->dump_node();
+  }
+  fprintf(stderr, "}");
+  fflush(stderr);
+}
+
 bool break_char_node::is_same_as(node *nd)
 {
   return break_code == ((break_char_node *)nd)->break_code

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

Reply via email to