commonmark-java

Java 的 Markdown 解析器
授权协议 BSD
开发语言 Java
所属分类 程序开发、 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();
    }
}
  • 朋也的博客 » 首页 » 文章 Java格式化Markdown文档的工具库commonmark-java 作者:朋也 日期:2017-10-24 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证) 之前在Java里格式化Markdown文档用的是Pegdown库,也挺好用的,不过还是没有commommark-java的可定制性强,下面对我使用commonmark-java做一下总

  • 软件简介 commonmark-java 是一个 Markdown 解析器,一个基于 CommonMark 规范解析和渲染 Markdown 文本的 Java 库。具有以下特性: 小(最小化的依赖) 快 (比 pegdown 快 10-20 倍,在仓库中可查看 benchmarks) 灵活 (解析后可操作 AST,自定义 HTML 渲染) 可扩展(表格,删除线,自动链接等等) Maven: com

  • 我们使用markdown语法存储在数据库中的文本 要取出来显示为HTML格式需要用到一个外部插件 不然它就是markdown语法的一堆字符串 Github插件地址 使用插件 1.在pom,xml引入需要用的依赖 <!--commommark插件--> <dependency> <groupId>com.atlassian.commonmark

  • 软件介绍 commonmark-java 是一个 Markdown 解析器,一个基于 CommonMark 规范解析和渲染 Markdown 文本的 Java 库。具有以下特性:小(最小化的依赖) 快 (比 pegdown 快 10-20 倍,在仓库中可查看 benchmarks) 灵活 (解析后可操作 AST,自定义 HTML 渲染) 可扩展(表格,删除线,自动链接等等) Maven: com.

  • commonmark-java例子 GitHub:commonmark-java Java 的 Markdown 解析器 导入 Maven : <dependency> <groupId>org.commonmark</groupId> <artifactId>commonmark</artifactId> <version>0.18.0</version> </depen

  • 1. maven <!-- 核心 --> <dependency> <groupId>com.atlassian.commonmark</groupId> <artifactId>commonmark</artifactId> <version>0.15.0</version>

 相关资料
  • CommonMark 是基于 CommonMark 规范的 PHP Markdown 解析器。 主要特性: 完全支持 CommonMark 规范 (100% compliance) 匹配 C 和 JavaScript 版本的 CommonMark 持续改进性能 提供扩展解析器和渲染器 基本使用: use League\CommonMark\CommonMarkConverter;$converte

  • 好的,今天我接受了一次采访,多年来我一直在Java编码。采访说“Java垃圾回收机制是一个棘手的问题,我有几个朋友一直在努力弄清楚。你在这方面做得怎么样?”。她是想欺骗我吗?还是我的一生都是谎言,java没有自动垃圾回收机制? 因为据我所知,java有自动垃圾回收机制,你可以调用System.gc()来收集一些资源,但这并不强制对象被销毁。它仍然由JVM决定。 我说错了吗?

  • GitBook 預設使用 Markdown 標記語法。 本章內容僅快速呈現 Markdown 的基本語法與呈現,若需要更詳細的解說,英文資源可以看看發明人的說明: John Gruber's original spec 以及 GitHub 的擴充版 Github-flavored Markdown info page。Markdown.tw 有不錯的中文詳解;想看看俗稱 GFM - GitHub

  • 更改历史 * 2017-11-17 高天阳 标准化文档内容 * 2017-09-08 高天阳 初始化文档 1 历史、现状和发展 Markdown 是一个 Web 上使用的文本到HTML的转换工具,可以通过简单、易读易写的文本格式生成结构化的HTML文档。 Markdown 的目标是实现「易读易写」。 Markdown具有一系列衍生版本,用于扩展Markdown的功能(如

  • markdown 在模板中插入Markdown代码。使用{{# markdown}}Helper很简单: <div class="my-div"> {{#markdown}} # My heading Some paragraph text {{/markdown}} </div> 确保你的markdown缩进正确。

  • Markdown 是一个 Web 上使用的文本到HTML的转换工具,可以通过简单、易读易写的文本格式生成结构化的HTML文档。目前 Stackoverflow 网站使用这种格式来提问。 一个文本实例: ### Header 3 > This is a blockquote. > > This is the second paragraph in the blockquote. > > ## Thi