From 7d4c7f43291c5b049dd5d9f8d6bd42cb35c6754b Mon Sep 17 00:00:00 2001
From: Jan Zickermann <jan.zickermann@dataport.de>
Date: Fri, 31 Jan 2025 14:33:29 +0100
Subject: [PATCH] OZG-4095 Simplify replacement

---
 .../osiv2/transfer/Osi2HtmlDocument.java      | 31 +++++++------------
 .../transfer/PostfachApiFacadeService.java    |  1 -
 .../osiv2/transfer/Osi2HtmlDocumentTest.java  |  6 ++--
 3 files changed, 15 insertions(+), 23 deletions(-)

diff --git a/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/Osi2HtmlDocument.java b/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/Osi2HtmlDocument.java
index 074c226..5273da3 100644
--- a/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/Osi2HtmlDocument.java
+++ b/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/Osi2HtmlDocument.java
@@ -24,39 +24,32 @@ public record Osi2HtmlDocument(String html) {
 	}
 
 	static final List<SpanRendering> SPAN_RENDERINGS = List.of(
+			SpanRendering.of("a", anchor -> "[" + anchor.text() + "](" + anchor.attr("href") + ")"),
+			SpanRendering.of("img", image -> "![" + image.attr("alt") + "](" + image.attr("src") + ")"),
+			SpanRendering.of("i", italic -> "_" + italic.text() + "_"),
+			SpanRendering.of("em", italic -> "_" + italic.text() + "_"),
+			SpanRendering.of("b", bold -> "__" + bold.text() + "__"),
+			SpanRendering.of("strong", bold -> "__" + bold.text() + "__"),
 			SpanRendering.of("h1", heading -> "# " + heading.text()),
 			SpanRendering.of("h2", heading -> "## " + heading.text()),
 			SpanRendering.of("h3", heading -> "### " + heading.text()),
-			SpanRendering.of("i", italic -> "*" + italic.text() + "*"),
-			SpanRendering.of("em", italic -> "*" + italic.text() + "*"),
-			SpanRendering.of("b", bold -> "**" + bold.text() + "**"),
-			SpanRendering.of("strong", bold -> "**" + bold.text() + "**"),
-			SpanRendering.of("img", image -> "![" + image.attr("alt") + "](" + image.attr("src") + ")"),
-			SpanRendering.of("a", anchor -> "[" + anchor.text() + "](" + anchor.attr("href") + ")"),
-			SpanRendering.of("blockquote", bold -> "> " + bold.wholeText())
+			SpanRendering.of("blockquote", bold -> "> " + bold.text())
 	);
 
-	public String renderHTMLToPlainText() {
+	public String renderToPlainText() {
 		var document = Jsoup.parse(html);
-		addNewlinesForSubsequentParagraphs(document);
-		replaceElementsWithMarkdownSpansIn(document);
+		applySpanRenderings(document);
 		return document.wholeText();
 	}
 
-	private void addNewlinesForSubsequentParagraphs(Document document) {
-		document.body()
-				.select("p + p")
-				.prepend("\n");
-	}
-
-	private void replaceElementsWithMarkdownSpansIn(Document document) {
+	private void applySpanRenderings(Document document) {
 		for (var entry : SPAN_RENDERINGS) {
 			entry.replaceElementsWithMarkdownSpansIn(document);
 		}
 	}
 
-	public static String renderPlainText(String html) {
-		return new Osi2HtmlDocument(html).renderHTMLToPlainText();
+	public static String renderToPlainText(String html) {
+		return new Osi2HtmlDocument(html).renderToPlainText();
 	}
 
 }
diff --git a/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/PostfachApiFacadeService.java b/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/PostfachApiFacadeService.java
index d11c556..b4012fd 100644
--- a/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/PostfachApiFacadeService.java
+++ b/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/PostfachApiFacadeService.java
@@ -49,6 +49,5 @@ public class PostfachApiFacadeService {
 
 	public void deleteMessage(final String messageId) {
 		messageExchangeApi.deleteMessage(UUID.fromString(messageId));
-
 	}
 }
diff --git a/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/Osi2HtmlDocumentTest.java b/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/Osi2HtmlDocumentTest.java
index 5970838..fd8dc9e 100644
--- a/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/Osi2HtmlDocumentTest.java
+++ b/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/Osi2HtmlDocumentTest.java
@@ -71,9 +71,9 @@ class Osi2HtmlDocumentTest {
 	@DisplayName("should render blockquote")
 	@Test
 	void shouldRenderBlockquote() {
-		var plainText = renderPlainText("<blockquote><p>Example</p><p>Example2</p></blockquote>");
+		var plainText = renderPlainText("<blockquote><p>Example</p>\n<p>Example2</p></blockquote>");
 
-		assertThat(plainText).isEqualTo("> Example\nExample2");
+		assertThat(plainText).isEqualTo("> Example Example2");
 	}
 
 	@DisplayName("should render html")
@@ -85,6 +85,6 @@ class Osi2HtmlDocumentTest {
 	}
 	
 	private String renderPlainText(String html) {
-		return new Osi2HtmlDocument(html).renderHTMLToPlainText();
+		return new Osi2HtmlDocument(html).renderToPlainText();
 	}
 }
\ No newline at end of file
-- 
GitLab