首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Commonmark for Java -我想在没有段落的情况下渲染?

Commonmark for Java -我想在没有段落的情况下渲染?
EN

Stack Overflow用户
提问于 2017-01-26 23:14:59
回答 1查看 331关注 0票数 1

我正在使用Atlassian Commonmark API发现的here来解析Markdown到HTML。

效果很好,但是倾向于将<p</p>添加到每个已解析字符串的开头和结尾。

有没有人在过去广泛使用过API,并且/或者我知道如何让它停止这样做?

除了之后手动删除段落之外,也就是,这感觉...不知何故不洁。

编辑澄清:转换后的代码片段是为了在HTML表中使用,所以我不需要它们前后的段落位。

Markdown输入可能是:

代码语言:javascript
复制
####Text for the table here.

我得到的输出是:

代码语言:javascript
复制
<p><h6>Text for the table here.</h6></p>

我想要的只是不添加段落片段:

代码语言:javascript
复制
<h6>Text for the table here.</h6>
EN

回答 1

Stack Overflow用户

发布于 2021-01-06 02:02:44

也在找这个。我通过创建一个简单的自定义渲染器来实现它,该渲染器不渲染顶级<p>aragraphs。

它检查一个段落的父节点是否是Document节点,如果是,它只呈现该段落的子节点。

它扩展了默认渲染器(CoreHtmlNodeRenderer)以访问visitChildren()visit(Paragraph)

在kotlin:

代码语言:javascript
复制
class SkipParentWrapperParagraphsRenderer(val context: HtmlNodeRendererContext)
    : CoreHtmlNodeRenderer(context), NodeRenderer {

    override fun getNodeTypes(): Set<Class<out Node>> {
        return setOf(Paragraph::class.java)
    }
    
    override fun render(node: Node) {
        if (node.parent is Document) {
            visitChildren(node)
        } else {
            visit(node as Paragraph)
        }
    }
}

注册新渲染器:

代码语言:javascript
复制
val renderer: HtmlRenderer = HtmlRenderer
    .builder()
    .nodeRendererFactory { context -> SkipParentWrapperParagraphsRenderer(context) }
    .build()

有一个example in the documentation

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41876676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档