下面列出了org.eclipse.lsp4j.ParameterInformation#com.vladsch.flexmark.html.HtmlRenderer 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
public static String getHtmlFromMarkdown(String md){
MutableDataSet options = new MutableDataSet();
// uncomment to set optional extensions
//options.set(Parser.EXTENSIONS, Arrays.asList(TablesExtension.create(), StrikethroughExtension.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();
Node document = parser.parse(md);
String html = renderer.render(document);
//do some more formatting
html = RegexUtils.replaceMarkdownImage(html);
html = RegexUtils.replacePlainImageLinks(html);
return html;
}
@Override
protected String doInBackground(String... strings) {
Parser parser = Parser.builder(OPTIONS)
.extensions(EXTENSIONS)
.build();
HtmlRenderer renderer = HtmlRenderer.builder(OPTIONS)
.escapeHtml(true)
.attributeProviderFactory(new IndependentAttributeProviderFactory() {
@Override
public AttributeProvider create(NodeRendererContext context) {
return new CustomAttributeProvider();
}
})
.nodeRendererFactory(new NodeRendererFactoryImpl())
.extensions(EXTENSIONS)
.build();
return renderer.render(parser.parse(strings[0]));
}
protected void makeConverter() {
try {
parserOptions = new MutableDataSet();
parserOptions.setFrom(ParserEmulationProfile.valueOf(emulationSelector.getValue()));
parserOptions.set(Parser.EXTENSIONS, Arrays.asList(
// AbbreviationExtension.create(),
// DefinitionExtension.create(),
// FootnoteExtension.create(),
// TypographicExtension.create(),
TablesExtension.create()
));
parserOptions.set(HtmlRenderer.INDENT_SIZE, indentSize)
// .set(HtmlRenderer.PERCENT_ENCODE_URLS, true)
// .set(TablesExtension.COLUMN_SPANS, false)
.set(TablesExtension.TRIM_CELL_WHITESPACE, trimCheck.isSelected())
.set(TablesExtension.APPEND_MISSING_COLUMNS, appendCheck.isSelected())
.set(TablesExtension.DISCARD_EXTRA_COLUMNS, discardCheck.isSelected())
.set(TablesExtension.APPEND_MISSING_COLUMNS, appendCheck.isSelected());
parser = Parser.builder(parserOptions).build();
renderer = HtmlRenderer.builder(parserOptions).build();
} catch (Exception e) {
logger.error(e.toString());
}
}
public String getInstructionsAsHTML() {
MutableDataSet options = new MutableDataSet();
// uncomment to set optional extensions
//options.set(Parser.EXTENSIONS, Arrays.asList(TablesExtension.create(), StrikethroughExtension.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();
String markdown = getInstructionsAsMarkdown();
// You can re-use parser and renderer instances
Node document = parser.parse(markdown);
return renderer.render(document);
}
private String parseBuildAndRender(String text) {
Parser parser = Parser.builder(OPTIONS)
.extensions(EXTENSIONS)
.build();
HtmlRenderer renderer = HtmlRenderer.builder(OPTIONS)
.escapeHtml(mEscapeHtml)
.attributeProviderFactory(new IndependentAttributeProviderFactory() {
@Override
public AttributeProvider create(NodeRendererContext context) {
return new CustomAttributeProvider();
}
})
.nodeRendererFactory(new NodeRendererFactoryImpl())
.extensions(EXTENSIONS)
.build();
return renderer.render(parser.parse(text));
}
private static synchronized HtmlRenderer getHTMLRenderer( String rootUrl, boolean hardwrapsEnabled ){
if(!currentRootUrl.equals(rootUrl) && rootUrl != null ) {
currentRootUrl = rootUrl;
RENDERER_HW = null;
RENDERER_NOHW = null;
String linkPrefix = rootUrl + "/";
optionsHardWraps.set(WikiLinkExtension.LINK_PREFIX, linkPrefix);
optionsNoHardWraps.set(WikiLinkExtension.LINK_PREFIX, linkPrefix);
}
if(hardwrapsEnabled){
if(RENDERER_HW == null){
RENDERER_HW = HtmlRenderer.builder( optionsHardWraps ).build();
}
return RENDERER_HW;
} else {
if(RENDERER_NOHW == null){
RENDERER_NOHW = HtmlRenderer.builder( optionsNoHardWraps ).build();
}
return RENDERER_NOHW;
}
}
@Override
protected String load() {
String markDownValue = markDawnModel.getObject();
if (Strings.isEmpty(markDownValue)) {
return "";
}
try {
MutableDataSet options = new MutableDataSet();
options.set(Parser.EXTENSIONS, createExtensions());
Parser parser = Parser.builder(options).build();
HtmlRenderer renderer = HtmlRenderer.builder(options).build();
Node node = parser.parse(markDawnModel.getObject());
markDownValue = renderer.render(node);
} catch (Exception e) {
throw new WicketRuntimeException("Can't use flexmark-java for markups", e);
}
return markDownValue;
}
@Override
public void processBody(final ParserContext context) {
List<String> mdExts = context.getConfig().getMarkdownExtensions();
int extensions = PegdownExtensions.NONE;
for (String ext : mdExts) {
if (ext.startsWith("-")) {
ext = ext.substring(1);
extensions = removeExtension(extensions, extensionFor(ext));
} else {
if (ext.startsWith("+")) {
ext = ext.substring(1);
}
extensions = addExtension(extensions, extensionFor(ext));
}
}
DataHolder options = PegdownOptionsAdapter.flexmarkOptions(extensions);
Parser parser = Parser.builder(options).build();
HtmlRenderer renderer = HtmlRenderer.builder(options).build();
Document document = parser.parse(context.getBody());
context.setBody(renderer.render(document));
}
@Override
public void extend(HtmlRenderer.Builder rendererBuilder, String rendererType) {
rendererBuilder.linkResolverFactory(new LinkResolverFactory() {
@Override
public Set<Class<? extends LinkResolverFactory>> getAfterDependents() {
return null;
}
@Override
public Set<Class<? extends LinkResolverFactory>> getBeforeDependents() {
return null;
}
@Override
public boolean affectsGlobalScope() {
return false;
}
@Override
public LinkResolver create(LinkResolverContext context) {
return linkResolver;
}
});
}
/**
* Convert markdown to html.
*
* @param content markdown contents
* @return html contents
*/
public static String toHtml(String content) {
MutableDataSet options = new MutableDataSet();
options.setFrom(ParserEmulationProfile.MARKDOWN);
// enable table parse!
options.set(Parser.EXTENSIONS, Arrays.asList(TablesExtension.create(), StrikethroughExtension.create()));
Parser parser = Parser.builder(options).build();
HtmlRenderer renderer = HtmlRenderer.builder(options).build();
Node document = parser.parse(content);
return renderer.render(document);
}
/**
* Markdown转Html
* @param markdown
* @return
*/
public static String markdownToHtml(String markdown) {
MutableDataSet options = new MutableDataSet();
Parser parser = Parser.builder(options).build();
HtmlRenderer renderer = HtmlRenderer.builder(options).build();
Node document = parser.parse(markdown);
String html = renderer.render(document);
return html;
}
/**
* 展示网页
*/
private void showHtml(String md) {
DataHolder OPTIONS = PegdownOptionsAdapter.flexmarkOptions(true,
Extensions.NONE);
Parser parser = Parser.builder(OPTIONS).build();
HtmlRenderer renderer = HtmlRenderer.builder(OPTIONS).build();
Node document = parser.parse(md);
String html = renderer.render(document);
// LogUtil.e(html);
mWebView.getSettings().setDefaultTextEncodingName("UTF-8");
mWebView.loadData(html, "text/html; charset=UTF-8", null);
}
/**
* Markdownz转为Html
* @param content
* @return
*/
public static String html(String content){
MutableDataSet options = new MutableDataSet();
options.setFrom(ParserEmulationProfile.MARKDOWN);
options.set(Parser.EXTENSIONS, Arrays.asList(new Extension[]{TablesExtension.create()}));
Parser parser = Parser.builder(options).build();
HtmlRenderer renderer = HtmlRenderer.builder(options).build();
Node document = parser.parse(content);
return renderer.render(document);
}
@Override
public void extend(HtmlRenderer.Builder rendererBuilder, String rendererType) {
switch (rendererType) {
case "HTML":
rendererBuilder.nodeRendererFactory(new NodeRendererFactory() {
@Override
public NodeRenderer create(DataHolder options) {
return new MarkNodeRenderer(options);
}
});
break;
}
}
@Override
public void extend(HtmlRenderer.Builder rendererBuilder, String rendererType) {
switch (rendererType) {
case "HTML":
rendererBuilder.nodeRendererFactory(new NodeRendererFactory() {
@Override
public NodeRenderer create(DataHolder options) {
return new MathJaxNodeRenderer(options);
}
});
break;
}
}
@Override
public boolean makeMoreParameters() {
try {
parserOptions = new MutableDataSet();
parserOptions.setFrom(ParserEmulationProfile.valueOf(emulationSelector.getValue()));
parserOptions.set(Parser.EXTENSIONS, Arrays.asList(
// AbbreviationExtension.create(),
// DefinitionExtension.create(),
// FootnoteExtension.create(),
// TypographicExtension.create(),
TablesExtension.create()
));
parserOptions.set(HtmlRenderer.INDENT_SIZE, indentSize)
// .set(HtmlRenderer.PERCENT_ENCODE_URLS, true)
// .set(TablesExtension.COLUMN_SPANS, false)
.set(TablesExtension.TRIM_CELL_WHITESPACE, trimCheck.isSelected())
.set(TablesExtension.APPEND_MISSING_COLUMNS, appendCheck.isSelected())
.set(TablesExtension.DISCARD_EXTRA_COLUMNS, discardCheck.isSelected())
.set(TablesExtension.APPEND_MISSING_COLUMNS, appendCheck.isSelected());
parser = Parser.builder(parserOptions).build();
renderer = HtmlRenderer.builder(parserOptions).build();
} catch (Exception e) {
logger.error(e.toString());
return false;
}
return super.makeMoreParameters();
}
@Override
public String render(String markdown) {
List<Extension> extensions = new ArrayList<>();
extensions.add(AnchorLinkExtension.create());
extensions.add(TablesExtension.create());
extensions.add(TaskListExtension.create());
extensions.add(DefinitionExtension.create());
extensions.add(TocExtension.create());
extensions.add(AutolinkExtension.create());
extensions.addAll(contributedExtensions);
MutableDataHolder options = new MutableDataSet()
.set(HtmlRenderer.GENERATE_HEADER_ID, true)
.set(AnchorLinkExtension.ANCHORLINKS_SET_NAME, true)
.set(AnchorLinkExtension.ANCHORLINKS_WRAP_TEXT, false)
.set(AnchorLinkExtension.ANCHORLINKS_TEXT_PREFIX, "<span class='header-anchor'></span>")
.set(Parser.SPACE_IN_LINK_URLS, true)
.setFrom(ParserEmulationProfile.GITHUB_DOC)
.set(TablesExtension.COLUMN_SPANS, false)
.set(TablesExtension.APPEND_MISSING_COLUMNS, true)
.set(TablesExtension.DISCARD_EXTRA_COLUMNS, true)
.set(TablesExtension.HEADER_SEPARATOR_COLUMN_MATCH, true)
.set(Parser.EXTENSIONS, extensions);
Parser parser = Parser.builder(options).build();
HtmlRenderer htmlRenderer = HtmlRenderer.builder(options).build();
Node document = parser.parse(markdown);
return htmlRenderer.render(document);
}
@Override
public void extend(HtmlRenderer.Builder rendererBuilder, String rendererType) {
switch (rendererType) {
case "HTML":
rendererBuilder.nodeRendererFactory(new KeystrokeNodeRenderer.Factory());
break;
}
}
@Override
public void extend(HtmlRenderer.Builder rendererBuilder, String rendererType) {
switch (rendererType) {
case "HTML":
rendererBuilder.nodeRendererFactory(new NodeRendererFactory() {
@Override
public NodeRenderer create(DataHolder options) {
return new MarkNodeRenderer(options);
}
});
break;
}
}
@Override
public void extend(HtmlRenderer.Builder rendererBuilder, String rendererType) {
switch (rendererType) {
case "HTML":
rendererBuilder.nodeRendererFactory(new NodeRendererFactory() {
@Override
public NodeRenderer create(DataHolder options) {
return new MathJaxNodeRenderer(options);
}
});
break;
}
}
@Override
public void extend(HtmlRenderer.Builder rendererBuilder, String rendererType) {
switch (rendererType) {
case "HTML":
rendererBuilder.nodeRendererFactory(new LabelNodeRenderer.Factory());
break;
}
}
@Override
public void extend(HtmlRenderer.Builder rendererBuilder, String rendererType) {
switch (rendererType) {
case "HTML":
rendererBuilder.nodeRendererFactory(new BeanNodeRenderer.Factory());
break;
}
}
private String markdownToHtml(Parser parser, HtmlRenderer renderer, String markdown) {
if (Strings.isNullOrEmpty(markdown)) {
return null;
}
Node document = parser.parse(markdown);
return renderer.render(document);
}
public FlexmarkParser() {
MutableDataSet options = new MutableDataSet();
options.set(Parser.EXTENSIONS, Arrays.asList(StrikethroughExtension.create(),
TablesExtension.create(),
UMLExtension.create(),
AutolinkExtension.create(),
WikiLinkExtension.create(),
TypographicExtension.create()));
options.set(HtmlRenderer.SOFT_BREAK, "<br />\n");
parser = Parser.builder(options).build();
renderer = HtmlRenderer.builder(options).build();
}
public static String wikiFormat(String text, boolean useHardWraps, String rootUrl){
try {
Node document = MARKDOWN_PARSER.parse( text );
HtmlRenderer renderer = getHTMLRenderer(rootUrl, useHardWraps);
return renderer.render(document);
// + "<!--end-->"; //This forces an unclosed HTML-comment in the rendered output to be closed. This fixes the issue where commonmark may escape a closing `-->` when a blank line exists in the HTML comment.
// return processor.markdownToHtml( processVerbatim(text), getLinkRenderer( rootUrl ) );
} catch (Exception e) {
Logger.error(e);
return errorMessage(text);
}
}
private static MutableDataHolder getMarkdownOptions() {
return new MutableDataSet()
.set(HtmlRenderer.ESCAPE_HTML, true)
.set(EmojiExtension.USE_IMAGE_TYPE, EmojiImageType.UNICODE_FALLBACK_TO_IMAGE)
// for full GFM table compatibility add the following table extension options:
.set(TablesExtension.COLUMN_SPANS, false)
.set(TablesExtension.APPEND_MISSING_COLUMNS, true)
.set(TablesExtension.DISCARD_EXTRA_COLUMNS, true)
.set(TablesExtension.HEADER_SEPARATOR_COLUMN_MATCH, true)
.set(Parser.EXTENSIONS, Arrays.asList(TablesExtension.create(), EmojiExtension.create(),
StrikethroughExtension.create(), TaskListExtension.create()));
}
private String convertMarkdownToHTML(final String md) {
final MutableDataSet options = new MutableDataSet();
final Parser parser = Parser.builder(options).build();
final HtmlRenderer renderer = HtmlRenderer.builder(options).build();
final Node document = parser.parse(md);
return renderer.render(document);
}
@Override
public void extend(HtmlRenderer.Builder rendererBuilder, String rendererType) {
rendererBuilder.nodeRendererFactory(new EmojiNodeRenderer.Factory());
}
@Override
public void extend(HtmlRenderer.Builder rendererBuilder, String rendererType) {
if (rendererType.equals("HTML")) {
rendererBuilder.nodeRendererFactory(new TwitterNodeRenderer.Factory());
}
}
@Override
public void extend(HtmlRenderer.Builder rendererBuilder, String rendererType) {
if (rendererType.equals("HTML")) {
rendererBuilder.nodeRendererFactory(new EmojiNodeRenderer.Factory());
}
}