You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by kw...@apache.org on 2023/02/01 10:37:28 UTC

[maven-doxia] branch master updated: [DOXIA-691] emit multiple authors in separate tags (#142)

This is an automated email from the ASF dual-hosted git repository.

kwin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-doxia.git


The following commit(s) were added to refs/heads/master by this push:
     new 97c01058 [DOXIA-691] emit multiple authors in separate tags (#142)
97c01058 is described below

commit 97c0105868230068ab053107ac7784f3f30cf053
Author: Konrad Windszus <kw...@apache.org>
AuthorDate: Wed Feb 1 11:37:23 2023 +0100

    [DOXIA-691] emit multiple authors in separate tags (#142)
---
 .../org/apache/maven/doxia/module/apt/AptParser.java   |  9 +++++++--
 .../org/apache/maven/doxia/module/apt/AptSink.java     | 12 +++++++-----
 .../apache/maven/doxia/module/apt/AptParserTest.java   | 18 ++++++++++++++++++
 .../src/test/resources/test/authors.apt                |  6 ++++++
 4 files changed, 38 insertions(+), 7 deletions(-)

diff --git a/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java b/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java
index 9bbdef60..c020a8a6 100644
--- a/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java
+++ b/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java
@@ -1617,8 +1617,13 @@ public class AptParser extends AbstractTextParser implements AptMarkup {
                                 break;
                         }
                     } else {
-                        // An implicit lineBreak separates title lines.
-                        AptParser.this.sink.lineBreak();
+                        if (separator == 1) {
+                            AptParser.this.sink.author_();
+                            AptParser.this.sink.author();
+                        } else {
+                            // An implicit lineBreak separates title lines.
+                            AptParser.this.sink.lineBreak();
+                        }
                     }
 
                     AptParser.this.doTraverseText(line, 0, lineLength, AptParser.this.sink);
diff --git a/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptSink.java b/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptSink.java
index 0ce30749..0078723b 100644
--- a/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptSink.java
+++ b/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptSink.java
@@ -23,6 +23,8 @@ import javax.swing.text.MutableAttributeSet;
 import java.io.PrintWriter;
 import java.io.Writer;
 import java.util.ArrayList;
+import java.util.Collection;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.Stack;
 
@@ -55,8 +57,8 @@ public class AptSink extends AbstractTextSink implements AptMarkup {
     /**  A buffer that holds the table caption. */
     private StringBuilder tableCaptionBuffer;
 
-    /**  author. */
-    private String author;
+    /**  authors. */
+    private Collection<String> authors;
 
     /**  title. */
     private String title;
@@ -158,7 +160,7 @@ public class AptSink extends AbstractTextSink implements AptMarkup {
         this.tableCaptionBuffer = new StringBuilder();
         this.listNestingIndent = "";
 
-        this.author = null;
+        this.authors = new LinkedList<>();
         this.title = null;
         this.date = null;
         this.startFlag = true;
@@ -217,7 +219,7 @@ public class AptSink extends AbstractTextSink implements AptMarkup {
             write(" " + title + EOL);
         }
         write(HEADER_START_MARKUP + EOL);
-        if (author != null) {
+        for (String author : authors) {
             write(" " + author + EOL);
         }
         write(HEADER_START_MARKUP + EOL);
@@ -242,7 +244,7 @@ public class AptSink extends AbstractTextSink implements AptMarkup {
      */
     public void author_() {
         if (buffer.length() > 0) {
-            author = buffer.toString();
+            authors.add(buffer.toString());
             resetBuffer();
         }
     }
diff --git a/doxia-modules/doxia-module-apt/src/test/java/org/apache/maven/doxia/module/apt/AptParserTest.java b/doxia-modules/doxia-module-apt/src/test/java/org/apache/maven/doxia/module/apt/AptParserTest.java
index ee736e66..9420f044 100644
--- a/doxia-modules/doxia-module-apt/src/test/java/org/apache/maven/doxia/module/apt/AptParserTest.java
+++ b/doxia-modules/doxia-module-apt/src/test/java/org/apache/maven/doxia/module/apt/AptParserTest.java
@@ -486,6 +486,24 @@ public class AptParserTest extends AbstractParserTest {
         assertSinkEquals(it, "link_", "sectionTitle1_", "section1_", "body_");
     }
 
+    @Test
+    public void testMultipleAuthors() throws Exception {
+        // DOXIA-691
+        String head = parseFileToAptSink("test/authors");
+
+        SinkEventTestingSink sink = new SinkEventTestingSink();
+
+        parser.parse(head, sink);
+
+        Iterator<SinkEventElement> it = sink.getEventList().iterator();
+
+        assertSinkEquals(
+                it, "head", "title", "text", "title_", "author", "text", "author_", "author", "text", "author_",
+                "head_", "body", "body_");
+        assertSinkEquals(sink.getEventList().get(5), "text", "Konrad Windszus");
+        assertSinkEquals(sink.getEventList().get(8), "text", "Another author");
+    }
+
     protected String outputExtension() {
         return "apt";
     }
diff --git a/doxia-modules/doxia-module-apt/src/test/resources/test/authors.apt b/doxia-modules/doxia-module-apt/src/test/resources/test/authors.apt
new file mode 100644
index 00000000..00b7251a
--- /dev/null
+++ b/doxia-modules/doxia-module-apt/src/test/resources/test/authors.apt
@@ -0,0 +1,6 @@
+ -----
+ Test DOXIA-691
+ -----
+ Konrad Windszus
+ Another author
+ -----
\ No newline at end of file