【发布时间】:2020-01-07 19:57:17
【问题描述】:
我有这个代码:
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>
?
【问题讨论】:
标签: java parsing markdown commonmark