|
1 | 1 | package org.commonmark.test; |
2 | 2 |
|
| 3 | +import org.commonmark.node.Link; |
| 4 | +import org.commonmark.node.Node; |
| 5 | +import org.commonmark.renderer.NodeRenderer; |
3 | 6 | import org.commonmark.renderer.text.LineBreakRendering; |
| 7 | +import org.commonmark.renderer.text.TextContentNodeRendererContext; |
| 8 | +import org.commonmark.renderer.text.TextContentNodeRendererFactory; |
4 | 9 | import org.commonmark.renderer.text.TextContentRenderer; |
5 | 10 | import org.commonmark.parser.Parser; |
6 | 11 | import org.commonmark.testutil.Asserts; |
7 | 12 | import org.junit.Test; |
8 | 13 |
|
| 14 | +import java.util.Set; |
| 15 | + |
9 | 16 | import static org.junit.Assert.assertEquals; |
10 | 17 |
|
11 | 18 | public class TextContentRendererTest { |
@@ -191,6 +198,41 @@ public void textContentHtml() { |
191 | 198 | assertAll(html, html); |
192 | 199 | } |
193 | 200 |
|
| 201 | + @Test |
| 202 | + public void testOverrideNodeRendering() { |
| 203 | + var nodeRendererFactory = new TextContentNodeRendererFactory() { |
| 204 | + @Override |
| 205 | + public NodeRenderer create(TextContentNodeRendererContext context) { |
| 206 | + return new NodeRenderer() { |
| 207 | + |
| 208 | + @Override |
| 209 | + public Set<Class<? extends Node>> getNodeTypes() { |
| 210 | + return Set.of(Link.class); |
| 211 | + } |
| 212 | + |
| 213 | + @Override |
| 214 | + public void render(Node node) { |
| 215 | + context.getWriter().write('"'); |
| 216 | + renderChildren(node); |
| 217 | + context.getWriter().write('"'); |
| 218 | + } |
| 219 | + |
| 220 | + private void renderChildren(Node parent) { |
| 221 | + Node node = parent.getFirstChild(); |
| 222 | + while (node != null) { |
| 223 | + Node next = node.getNext(); |
| 224 | + context.render(node); |
| 225 | + node = next; |
| 226 | + } |
| 227 | + } |
| 228 | + }; |
| 229 | + } |
| 230 | + }; |
| 231 | + var renderer = TextContentRenderer.builder().nodeRendererFactory(nodeRendererFactory).build(); |
| 232 | + var source = "Hi [Example](https://example.com)"; |
| 233 | + Asserts.assertRendering(source, "Hi \"Example\"", renderer.render(PARSER.parse(source))); |
| 234 | + } |
| 235 | + |
194 | 236 | private void assertCompact(String source, String expected) { |
195 | 237 | var doc = PARSER.parse(source); |
196 | 238 | var actualRendering = COMPACT_RENDERER.render(doc); |
|
0 commit comments