我有这样的代码:
public class TestCommons {
public static void main(String[] args) {
Parser parser = Parser.builder().build();
Node document = parser.parse("*`Yes.` This* **is** ```\nSparta```");
HtmlRenderer renderer = HtmlRenderer.builder().build();
System.out.println(renderer.render(document)); //<p><em><code>Yes.</code> This</em> <strong>is</strong> <code> Sparta</code></p>
}
}所以可以看到,它用<code>标签代替了一滴答和三滴答。不过,我想用<pre>标签代替三滴答。有办法做到这一点吗?我只在他们的github上找到了这个例子:
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("*`Yes.` This* **is** ```\nSparta```");
renderer.render(document);
//<p><em><code>Yes.</code> This</em> <strong>is</strong> <code> Sparta</code></p>
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();
}
}但是,它提供了相同的结果,并且似乎只区分前面有多个/n的字符串,以限定<pre>标记。
转向的方法是什么
"*`Yes.` This* **is** ```\nSparta```"转到
<p><em><code>Yes.</code> This</em> <strong>is</strong> <pre> Sparta</pre></p>发布于 2019-09-05 13:45:54
请注意,有两种不同类型的内容可以被3条滴答包围:
<code>标记中。<pre><code>标记中。我想你指的是有围栏的代码块。请注意,它们需要更多字符串中的换行符。因此,您的字符串被正确地解析为代码跨度。如果您希望将被3个背板包围的代码识别为一个有围栏的代码块,则需要添加一些额外的换行符:
"*`Yes.` This* **is** \n```\nSparta\n```"或者,作为格式化字符串:
*`Yes.` This* **is** 斯巴达
上述内容将由Commonmark解析为:
<p><em><code>Yes.</code> This</em> <strong>is</strong>
</p>
<pre><code>Sparta
</code></pre>注意,如果删除任何一个换行,那么它就被认为是一个代码跨度,而不是一个有围栏的代码块。
https://stackoverflow.com/questions/57796594
复制相似问题