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, "
\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); // "
This is Sparta
\n" return html; } @Override public String highlight(String content) { return content; } }