commonmark-java Java 的 Markdown 解析器开源项目

我要开发同款
匿名用户2017年08月09日
228阅读

技术信息

开源地址
https://github.com/atlassian/commonmark-java
授权协议
BSD

作品详情

commomark-java是一个Markdow解析器,一个基于 CommoMark 规范解析和渲染Markdow文本的Java库。具有以下特性:

小(最小化的依赖)

快(比pegdow快10-20倍,在仓库中可查看bechmarks)

灵活(解析后可操作AST,自定义HTML渲染)

可扩展(表格,删除线,自动链接等等)

Mave:

<depedecy>    <groupId>com.atlassia.commomark</groupId>    <artifactId>commomark</artifactId>    <versio>0.9.0</versio></depedecy>

解析和渲染成HTML

import org.commomark.ode.*;import org.commomark.parser.Parser;import org.commomark.rederer.html.HtmlRederer;Parser parser = Parser.builder().build();Node documet = parser.parse("This is *Sparta*");HtmlRederer rederer = HtmlRederer.builder().build();rederer.reder(documet);  // "<p>This is <em>Sparta</em></p>\"

你也可以对输出HTML进行属性定制:

Parser parser = Parser.builder().build();HtmlRederer rederer = HtmlRederer.builder()        .attributeProviderFactory(ew AttributeProviderFactory() {            public AttributeProvider create(AttributeProviderCotext cotext) {                retur ew ImageAttributeProvider();            }        })        .build();Node documet = parser.parse("![text](/url.pg)");rederer.reder(documet);// "<p><img src=\"/url.pg\" alt=\"text\" class=\"border\" /></p>\"class ImageAttributeProvider implemets AttributeProvider {    @Override    public void setAttributes(Node ode, Strig tagName, Map<Strig, Strig> attributes) {        if (ode istaceof Image) {            attributes.put("class", "border");        }    }}

对输出的HTML进行渲染定制:

Parser parser = Parser.builder().build();HtmlRederer rederer = HtmlRederer.builder()        .odeRedererFactory(ew HtmlNodeRedererFactory() {            public NodeRederer create(HtmlNodeRedererCotext cotext) {                retur ew IdetedCodeBlockNodeRederer(cotext);            }        })        .build();Node documet = parser.parse("Example:\\    code");rederer.reder(documet);// "<p>Example:</p>\<pre>code\</pre>\"class IdetedCodeBlockNodeRederer implemets NodeRederer {    private fial HtmlWriter html;    IdetedCodeBlockNodeRederer(HtmlNodeRedererCotext cotext) {        this.html = cotext.getWriter();    }    @Override    public Set<Class<? exteds Node>> getNodeTypes() {        // Retur the ode types we wat to use this rederer for.        retur Collectios.<Class<? exteds Node>>sigleto(IdetedCodeBlock.class);    }    @Override    public void reder(Node ode) {        // We oly hadle oe type as per getNodeTypes, so we ca just cast it here.        IdetedCodeBlock codeBlock = (IdetedCodeBlock) ode;        html.lie();        html.tag("pre");        html.text(codeBlock.getLiteral());        html.tag("/pre");        html.lie();    }}

功能介绍

commonmark-java 是一个 Markdown 解析器,一个基于 CommonMark 规范解析和渲染 Markdown 文本的 Java 库。具有以下特性: 小(最小化的依赖) 快 ...

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论