diff --git a/pom.xml b/pom.xml index 980ba60..ccd5df8 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.scijava pom-scijava - 26.0.0 + 29.2.1 @@ -84,6 +84,8 @@ Wisconsin-Madison. deploy-to-scijava + + 0.62.2 @@ -95,9 +97,16 @@ Wisconsin-Madison. - org.markdownj - markdownj - 0.3.0-1.0.2b4 + com.vladsch.flexmark + flexmark-all + ${flexmark.version} + + + + + junit + junit + test diff --git a/src/main/java/org/scijava/plugins/text/markdown/MarkdownTextFormat.java b/src/main/java/org/scijava/plugins/text/markdown/MarkdownTextFormat.java index d866208..cd9ada5 100644 --- a/src/main/java/org/scijava/plugins/text/markdown/MarkdownTextFormat.java +++ b/src/main/java/org/scijava/plugins/text/markdown/MarkdownTextFormat.java @@ -30,18 +30,18 @@ package org.scijava.plugins.text.markdown; -import com.petebevin.markdown.MarkdownProcessor; - +import com.vladsch.flexmark.util.ast.Node; +import com.vladsch.flexmark.html.HtmlRenderer; +import com.vladsch.flexmark.parser.Parser; import java.util.Arrays; import java.util.List; - import org.scijava.plugin.Plugin; import org.scijava.text.AbstractTextFormat; import org.scijava.text.TextFormat; /** - * Text format for Markdown. + * Text format for + * Markdown. * * @author Curtis Rueden */ @@ -55,8 +55,11 @@ public List getExtensions() { @Override public String asHTML(final String text) { - final MarkdownProcessor markdown = new MarkdownProcessor(); - return markdown.markdown(text); + Parser parser = Parser.builder().build(); + HtmlRenderer renderer = HtmlRenderer.builder().build(); + + Node node = parser.parse(text); + return renderer.render(node); } } diff --git a/src/test/java/org/scijava/plugins/text/markdown/MarkdownTextFormatTest.java b/src/test/java/org/scijava/plugins/text/markdown/MarkdownTextFormatTest.java new file mode 100644 index 0000000..6c5ebfd --- /dev/null +++ b/src/test/java/org/scijava/plugins/text/markdown/MarkdownTextFormatTest.java @@ -0,0 +1,57 @@ + +package org.scijava.plugins.text.markdown; + +import static org.junit.Assert.assertEquals; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; +import org.scijava.Context; +import org.scijava.io.handle.DataHandleService; +import org.scijava.text.TextService; + +public class MarkdownTextFormatTest { + + private static Context context; + + private final String markdown = "ImageJ*2* uses **SciJava**\n"; + private final String expected = + "

ImageJ2 uses SciJava

\n"; + + @BeforeClass + public static void setUp() { + context = new Context(TextService.class, DataHandleService.class); + } + + @AfterClass + public static void tearDown() { + context.dispose(); + } + + @Test + public void testMarkdownToHTML() { + MarkdownTextFormat format = new MarkdownTextFormat(); + String html = format.asHTML(markdown); + assertEquals("Format markdown as HTML", expected, html); + } + + @Test + public void testTextServiceMarkdown() throws IOException { + File tmpFile = File.createTempFile("MarkdownTextFormatTest", ".md"); + tmpFile.deleteOnExit(); + + try (BufferedWriter writer = new BufferedWriter(new FileWriter(tmpFile))) { + writer.write(markdown); + } + TextService textService = context.getService(TextService.class); + String html = textService.asHTML(tmpFile); + assertEquals("Handler for Markdown format", MarkdownTextFormat.class, + textService.getHandler(tmpFile).getClass()); + assertEquals("Markdown converted from file", "" + expected + + "", html); + } +}