VoidForum/src/main/java/ru/bvn13/voidforum/support/web/FlexmarkMarkdownService.java

49 lines
1.7 KiB
Java

package ru.bvn13.voidforum.support.web;
import com.vladsch.flexmark.ast.Node;
import com.vladsch.flexmark.ext.gfm.strikethrough.StrikethroughExtension;
import com.vladsch.flexmark.ext.tables.TablesExtension;
import com.vladsch.flexmark.ext.youtube.embedded.YouTubeLinkExtension;
import com.vladsch.flexmark.html.HtmlRenderer;
import com.vladsch.flexmark.parser.Parser;
import com.vladsch.flexmark.util.options.MutableDataSet;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import java.util.Arrays;
@Service
@Qualifier("flexmark")
public class FlexmarkMarkdownService implements MarkdownService, SyntaxHighlightService {
@Override
public String renderToHtml(String content) {
MutableDataSet options = new MutableDataSet();
// uncomment to set optional extensions
options.set(Parser.EXTENSIONS, Arrays.asList(
TablesExtension.create(),
StrikethroughExtension.create(),
//YoutubeLinkTransformer.YouTubeLinkExtension.create(),
YouTubeLinkExtension.create()
));
// uncomment to convert soft-breaks to hard breaks
//options.set(HtmlRenderer.SOFT_BREAK, "<br />\n");
Parser parser = Parser.builder(options).build();
HtmlRenderer renderer = HtmlRenderer.builder(options).build();
// You can re-use parser and renderer instances
Node document = parser.parse(content);
String html = renderer.render(document); // "<p>This is <em>Sparta</em></p>\n"
return html;
}
@Override
public String highlight(String content) {
return content;
}
}