Commit 1b0947af authored by Liang Ding's avatar Liang Ding

🎨 Fix #12304

parent eb8c2260
<?xml version="1.0" encoding="UTF-8"?>
<!--
Description: Solo POM.
Version: 3.16.1.39, Jun 2, 2017
Version: 3.16.1.39, Jun 3, 2017
Author: <a href="http://88250.b3log.org">Liang Ding</a>
Author: <a href="http://www.annpeter.cn">Ann Peter</a>
Author: <a href="http://vanessa.b3log.org">Vanessa</a>
......@@ -104,7 +104,6 @@
<servlet.version>3.1.0</servlet.version>
<slf4j.version>1.7.5</slf4j.version>
<jsoup.version>1.9.1</jsoup.version>
<pegdown.version>1.6.0</pegdown.version>
<flexmark.version>0.19.5</flexmark.version>
<qiniu.version>7.0.4.1</qiniu.version>
<jetty.version>9.2.7.v20150116</jetty.version>
......@@ -176,12 +175,6 @@
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.pegdown</groupId>
<artifactId>pegdown</artifactId>
<version>${pegdown.version}</version>
</dependency>
<dependency>
<groupId>com.vladsch.flexmark</groupId>
<artifactId>flexmark-all</artifactId>
......
......@@ -15,20 +15,23 @@
*/
package org.b3log.solo.util;
import com.vladsch.flexmark.ast.Node;
import com.vladsch.flexmark.html.HtmlRenderer;
import com.vladsch.flexmark.profiles.pegdown.Extensions;
import com.vladsch.flexmark.profiles.pegdown.PegdownOptionsAdapter;
import com.vladsch.flexmark.util.options.DataHolder;
import org.apache.commons.lang.StringUtils;
import org.b3log.latke.logging.Logger;
import org.b3log.latke.util.Strings;
import org.pegdown.Extensions;
import org.pegdown.PegDownProcessor;
/**
* <a href="http://en.wikipedia.org/wiki/Markdown">Markdown</a> utilities.
*
* <p>
* Uses the <a href="http://markdown.tautua.org/">MarkdownPapers</a> as the converter.</p>
* Uses the <a href="https://github.com/vsch/flexmark-java">flexmark</a> as the converter.
* </p>
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 2.0.0.2, Nov 3, 2016
* @version 2.1.0.2, Jun 3, 2017
* @since 0.4.5
*/
public final class Markdowns {
......@@ -36,7 +39,32 @@ public final class Markdowns {
/**
* Logger.
*/
private static final Logger LOGGER = Logger.getLogger(Markdowns.class.getName());
private static final Logger LOGGER = Logger.getLogger(Markdowns.class);
/**
* Built-in MD engine options.
*/
private static final DataHolder OPTIONS = PegdownOptionsAdapter.flexmarkOptions(
Extensions.ALL_OPTIONALS | Extensions.ALL_WITH_OPTIONALS
);
/**
* Built-in MD engine parser.
*/
private static final com.vladsch.flexmark.parser.Parser PARSER =
com.vladsch.flexmark.parser.Parser.builder(OPTIONS).build();
/**
* Built-in MD engine HTML renderer.
*/
private static final HtmlRenderer RENDERER = HtmlRenderer.builder(OPTIONS).build();
/**
* Private constructor.
*/
private Markdowns() {
}
/**
* Converts the specified markdown text to HTML.
......@@ -50,19 +78,12 @@ public final class Markdowns {
return "";
}
final PegDownProcessor pegDownProcessor = new PegDownProcessor(Extensions.ALL_OPTIONALS | Extensions.ALL_WITH_OPTIONALS, 5000);
String ret = pegDownProcessor.markdownToHtml(markdownText);
final Node document = PARSER.parse(markdownText);
String ret = RENDERER.render(document);
if (!StringUtils.startsWith(ret, "<p>")) {
ret = "<p>" + ret + "</p>";
}
return ret;
}
/**
* Private constructor.
*/
private Markdowns() {
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment