commonmark-javaJava 的 Markdown 解析器
commonmark-java 是一个 Markdown 解析器,一个基于 CommonMark 规范解析和渲染 Markdown 文本的 Java 库。具有以下特性:
小(最小化的依赖)
快 (比 pegdown 快 10-20 倍,在仓库中可查看 benchmarks)
灵活 (解析后可操作 AST,自定义 HTML 渲染)
可扩展(表格,删除线,自动链接等等)
Maven:
<dependency> <groupId>com.atlassian.commonmark</groupId> <artifactId>commonmark</artifactId> <version>0.9.0</version> </dependency>
解析和渲染成 HTML
import org.commonmark.node.*; import org.commonmark.parser.Parser; import org.commonmark.renderer.html.HtmlRenderer; Parser parser = Parser.builder().build(); Node document = parser.parse("This is *Sparta*"); HtmlRenderer renderer = HtmlRenderer.builder().build(); renderer.render(document); // "<p>This is <em>Sparta</em></p>\n"
你也可以对输出 HTML 进行属性定制:
Parser parser = Parser.builder().build(); HtmlRenderer renderer = HtmlRenderer.builder() .attributeProviderFactory(new AttributeProviderFactory() { public AttributeProvider create(AttributeProviderContext context) { return new ImageAttributeProvider(); } }) .build(); Node document = parser.parse("![text](/url.png)"); renderer.render(document); // "<p><img src=\"/url.png\" alt=\"text\" class=\"border\" /></p>\n" class ImageAttributeProvider implements AttributeProvider { @Override public void setAttributes(Node node, String tagName, Map<String, String> attributes) { if (node instanceof Image) { attributes.put("class", "border"); } } }
对输出的 HTML 进行渲染定制:
Parser parser = Parser.builder().build(); HtmlRenderer renderer = HtmlRenderer.builder() .nodeRendererFactory(new HtmlNodeRendererFactory() { public NodeRenderer create(HtmlNodeRendererContext context) { return new IndentedCodeBlockNodeRenderer(context); } }) .build(); Node document = parser.parse("Example:\n\n code"); renderer.render(document); // "<p>Example:</p>\n<pre>code\n</pre>\n" class IndentedCodeBlockNodeRenderer implements NodeRenderer { private final HtmlWriter html; IndentedCodeBlockNodeRenderer(HtmlNodeRendererContext context) { this.html = context.getWriter(); } @Override public Set<Class<? extends Node>> getNodeTypes() { // Return the node types we want to use this renderer for. return Collections.<Class<? extends Node>>singleton(IndentedCodeBlock.class); } @Override public void render(Node node) { // We only handle one type as per getNodeTypes, so we can just cast it here. IndentedCodeBlock codeBlock = (IndentedCodeBlock) node; html.line(); html.tag("pre"); html.text(codeBlock.getLiteral()); html.tag("/pre"); html.line(); } }
评论
marky-markdownnpm 的 markdown 解析器
marky-markdown 是 npm 的官方 markdown 解析器,基于 NodeJS 编写
marky-markdownnpm 的 markdown 解析器
0
markdown4jJava 的 Markdown 解析器
markdown4j是一个开源的Java的Markdown处理器,具备可扩展性。基于Txtmark的改进版本。特性:跨平台轻量级,无需依赖第三方库实现了JohnGruber'sincredibleMa
markdown4jJava 的 Markdown 解析器
0
markdown4jJava 的 Markdown 解析器
markdown4j 是一个开源的 Java 的 Markdown 处理器,具备可扩展性。基于 Tx
markdown4jJava 的 Markdown 解析器
0
marky-markdownnpm 的 markdown 解析器
marky-markdown是npm的官方markdown解析器,基于NodeJS编写,旨在用 GitHub-stylemarkdown进行奇偶校验。它由一个最好的 CommonMarkmarkdow
marky-markdownnpm 的 markdown 解析器
0
MdjsJavascript实现的Markdown解析器
Mdjs是一个易用轻量级的Javascript实现的Markdown解析器。可用于Web前端与Node.js开发中对于目前广泛使用的Markdown语法均可解析(包括表格和TOC目录)Web前端//方
MdjsJavascript实现的Markdown解析器
0
HyperDownPHP Markdown 解析器
HyperDown是SegmentFault开发的一个结构清晰、易于维护、现代的PHPMarkdown解析器。Markdown已经面世许多年了,国内外许多大大小小的网站都在用它,但是它的解析器却依然混
HyperDownPHP Markdown 解析器
0
ParsedownPHP 写的 Markdown 解析器
Parsedown是一个用PHP写的Markdown解析器,解析速度非常快,而且简洁。示例代码:$text = 'Hello **Parsedown**!';$result = Parsedown::
ParsedownPHP 写的 Markdown 解析器
0
Nim-markdownNim 编写的 Markdown 解析器
Nim-markdown 是一个由 Nim 所编写的 Markdown 解析器。特性支持 Commo
Nim-markdownNim 编写的 Markdown 解析器
0