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 -> " + ")"), + 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 -> " + ")"), - 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