From 273501116ee5f3fecedbdaee756970a3aea7dcf8 Mon Sep 17 00:00:00 2001 From: M66B Date: Tue, 20 Feb 2024 10:59:17 +0100 Subject: [PATCH] Use flexmark to convert to Markdown --- app/build.gradle | 3 +++ app/src/main/java/eu/faircode/email/Markdown.java | 10 +++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index b73a039bbe..c64089fe15 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -777,6 +777,9 @@ dependencies { implementation "org.commonmark:commonmark-ext-gfm-tables:$commonmark_version"; implementation "org.commonmark:commonmark-ext-gfm-strikethrough:$commonmark_version"; + // https://github.com/vsch/flexmark-java + implementation "com.vladsch.flexmark:flexmark-html2md-converter:0.64.8" + // // https://github.com/QuadFlask/colorpicker //implementation "com.github.QuadFlask:colorpicker:$colorpicker_version" implementation project(':colorpicker') diff --git a/app/src/main/java/eu/faircode/email/Markdown.java b/app/src/main/java/eu/faircode/email/Markdown.java index 291279a21b..d0b58efcc5 100644 --- a/app/src/main/java/eu/faircode/email/Markdown.java +++ b/app/src/main/java/eu/faircode/email/Markdown.java @@ -19,13 +19,14 @@ package eu.faircode.email; Copyright 2018-2024 by Marcel Bokhorst (M66B) */ +import com.vladsch.flexmark.html2md.converter.FlexmarkHtmlConverter; + import org.commonmark.Extension; import org.commonmark.ext.gfm.strikethrough.StrikethroughExtension; import org.commonmark.ext.gfm.tables.TablesExtension; import org.commonmark.node.Node; import org.commonmark.parser.Parser; import org.commonmark.renderer.html.HtmlRenderer; -import org.jsoup.nodes.Document; import java.util.Arrays; import java.util.List; @@ -47,7 +48,10 @@ public class Markdown { } static String fromHtml(String html) { - // TODO: HTML to Markdown - throw new IllegalArgumentException("Not implemented"); + // https://github.com/vsch/flexmark-java/wiki/Extensions#html-to-markdown + String markdown = FlexmarkHtmlConverter.builder() + .build() + .convert(html); + return markdown.replaceAll("\n\n\\s+\n", ""); } }