michael-o commented on code in PR #1042:
URL: https://github.com/apache/maven-doxia/pull/1042#discussion_r2899720539


##########
doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/Xhtml5BaseSink.java:
##########
@@ -135,9 +135,20 @@ public Xhtml5BaseSink(Writer out) {
         this.tableCaptionXMLWriterStack = new LinkedList<>();
         this.tableCaptionStack = new LinkedList<>();
 
-        init();
+        doInit();
     }
 
+    /**
+     * Called from constructor and from {@link #init()} to initialize certain 
instance fields.
+     */
+    private void doInit() {

Review Comment:
   We should make it `initInternal()`



##########
doxia-modules/doxia-module-markdown/src/main/java/org/apache/maven/doxia/module/markdown/MarkdownSink.java:
##########
@@ -341,21 +339,34 @@ private String 
escapeForTableCell(LastTwoLinesBufferingWriter writer, String tex
     // ----------------------------------------------------------------------
 
     protected static MarkdownSink newInstance(Writer writer) {
-        LastTwoLinesBufferingWriter bufferingWriter = new 
LastTwoLinesBufferingWriter(writer);
-        return new MarkdownSink(bufferingWriter, new 
PrintWriter(bufferingWriter));
+        BufferingStackWriter bufferingStackWriter = new 
BufferingStackWriter(writer);
+        LastTwoLinesAwareWriter lineAwareWriter = new 
LastTwoLinesAwareWriter(bufferingStackWriter);
+        return new MarkdownSink(lineAwareWriter, bufferingStackWriter);
     }
 
     /**
      * Constructor, initialize the Writer and the variables.
      *
      * @param writer not null writer to write the result. <b>Should</b> be an 
UTF-8 Writer.
      */
-    private MarkdownSink(LastTwoLinesBufferingWriter bufferingWriter, 
PrintWriter writer) {
-        super(writer);
-        this.bufferingWriter = bufferingWriter;
-        this.writer = writer;
+    private MarkdownSink(LastTwoLinesAwareWriter lineAwareWriter, 
BufferingStackWriter bufferingStackWriter) {
+        super(lineAwareWriter);
+        this.lineAwareWriter = lineAwareWriter;
+        this.bufferingStackWriter = bufferingStackWriter;
+        doInit();
+    }
 
-        init();
+    private void doInit() {

Review Comment:
   ditto



##########
doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/Xhtml5BaseSink.java:
##########
@@ -135,9 +135,20 @@ public Xhtml5BaseSink(Writer out) {
         this.tableCaptionXMLWriterStack = new LinkedList<>();
         this.tableCaptionStack = new LinkedList<>();

Review Comment:
   These are not subject to init?



##########
doxia-modules/doxia-module-markdown/src/main/java/org/apache/maven/doxia/module/markdown/MarkdownSink.java:
##########
@@ -387,14 +398,31 @@ private void startContext(ElementContext newContext) {
         elementContextStack.add(newContext);
     }
 
+    private String toogleToRootContextWithoutBuffering(boolean dumpBuffer) {
+        final String buffer;
+        if (elementContextStack.element() == 
ElementContext.ROOT_WITH_BUFFERING) {
+            buffer = bufferingStackWriter.getCurrentBuffer().toString();
+            endContext(ElementContext.ROOT_WITH_BUFFERING);
+            if (dumpBuffer) {
+                write(buffer);
+            }
+            startContext(ElementContext.ROOT_WITHOUT_BUFFERING);
+        } else if (elementContextStack.element() != 
ElementContext.ROOT_WITHOUT_BUFFERING) {
+            throw new IllegalStateException("Unexpected context " + 
elementContextStack.element()
+                    + ", expected ROOT_WITH_BUFFERING or 
ROOT_WITHOUT_BUFFERING");
+        } else {
+            buffer = "";

Review Comment:
   How can this be a tristate? It is either  `ROOT_WITH_BUFFERING` or not, no?



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to