Skip to content

Commit 70ddbb2

Browse files
simplify
1 parent 27ab7aa commit 70ddbb2

File tree

17 files changed

+59
-224
lines changed

17 files changed

+59
-224
lines changed

commonmark-ext-footnotes/src/main/java/org/commonmark/ext/footnotes/internal/FootnoteHtmlNodeRenderer.java

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ public Set<Class<? extends Node>> getNodeTypes() {
8282
@Override
8383
public void beforeRoot(Node rootNode) {
8484
// Collect all definitions first, so we can look them up when encountering a reference later.
85-
var visitor = new DefinitionVisitor(context.getNodeTraversal(rootNode));
85+
var visitor = new DefinitionVisitor();
8686
rootNode.accept(visitor);
8787
definitionMap = visitor.definitions;
8888
}
@@ -145,7 +145,7 @@ public void afterRoot(Node rootNode) {
145145
check.addLast(node);
146146
references.put(node, registerReference(node, null));
147147
}
148-
}, context.getNodeTraversal(def)));
148+
}));
149149
}
150150

151151
for (var entry : referencedDefinitions.entrySet()) {
@@ -306,10 +306,6 @@ private static class DefinitionVisitor extends AbstractVisitor {
306306

307307
private final DefinitionMap<FootnoteDefinition> definitions = new DefinitionMap<>(FootnoteDefinition.class);
308308

309-
private DefinitionVisitor(NodeTraversal traversal) {
310-
super(traversal);
311-
}
312-
313309
@Override
314310
public void visit(CustomBlock customBlock) {
315311
if (customBlock instanceof FootnoteDefinition) {
@@ -329,8 +325,7 @@ private static class ShallowReferenceVisitor extends AbstractVisitor {
329325
private final Node parent;
330326
private final Consumer<Node> consumer;
331327

332-
private ShallowReferenceVisitor(Node parent, Consumer<Node> consumer, NodeTraversal traversal) {
333-
super(traversal);
328+
private ShallowReferenceVisitor(Node parent, Consumer<Node> consumer) {
334329
this.parent = parent;
335330
this.consumer = consumer;
336331
}

commonmark-ext-footnotes/src/test/java/org/commonmark/ext/footnotes/FootnoteHtmlRendererTest.java

Lines changed: 0 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import org.commonmark.Extension;
44
import org.commonmark.node.Document;
5-
import org.commonmark.node.NodeTraversal;
65
import org.commonmark.node.Paragraph;
76
import org.commonmark.node.Text;
87
import org.commonmark.parser.Parser;
@@ -222,25 +221,6 @@ public void testInlineFootnotes() {
222221
"</section>\n");
223222
}
224223

225-
@Test
226-
public void testNestedFootnotesTraversalLimitUsesRemainingDefinitionBudget() {
227-
String source = "[^foo1]\n" +
228-
"\n" +
229-
"[^foo1]: one *[^foo2]*\n" +
230-
"[^foo2]: two\n";
231-
232-
String expected = "<p><sup class=\"footnote-ref\"><a href=\"#fn-foo1\" id=\"fnref-foo1\" data-footnote-ref>1</a></sup></p>\n" +
233-
"<section class=\"footnotes\" data-footnotes>\n" +
234-
"<ol>\n" +
235-
"<li id=\"fn-foo1\">\n" +
236-
"<p>one <em></em> <a href=\"#fnref-foo1\" class=\"footnote-backref\" data-footnote-backref data-footnote-backref-idx=\"1\" aria-label=\"Back to reference 1\">↩</a></p>\n" +
237-
"</li>\n" +
238-
"</ol>\n" +
239-
"</section>\n";
240-
241-
Asserts.assertRendering(source, expected, renderWithTraversal(source, NodeTraversal.succeedLossy(3)));
242-
}
243-
244224
@Test
245225
public void testInlineFootnotesNested() {
246226
assertRenderingInline("Test ^[inline ^[nested]]",
@@ -350,14 +330,6 @@ protected String render(String source) {
350330
return RENDERER.render(PARSER.parse(source));
351331
}
352332

353-
private static String renderWithTraversal(String source, NodeTraversal traversal) {
354-
HtmlRenderer renderer = HtmlRenderer.builder()
355-
.extensions(EXTENSIONS)
356-
.nodeTraversal(traversal)
357-
.build();
358-
return renderer.render(PARSER.parse(source));
359-
}
360-
361333
private static void assertRenderingInline(String source, String expected) {
362334
var extension = FootnotesExtension.builder().inlineFootnotes(true).build();
363335
var parser = Parser.builder().extensions(List.of(extension)).build();

commonmark-ext-heading-anchor/src/main/java/org/commonmark/ext/heading/anchor/HeadingAnchorExtension.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ public void extend(HtmlRenderer.Builder rendererBuilder) {
5858
rendererBuilder.attributeProviderFactory(new AttributeProviderFactory() {
5959
@Override
6060
public AttributeProvider create(AttributeProviderContext context) {
61-
return HeadingIdAttributeProvider.create(defaultId, idPrefix, idSuffix, context);
61+
return HeadingIdAttributeProvider.create(defaultId, idPrefix, idSuffix);
6262
}
6363
});
6464
}

commonmark-ext-heading-anchor/src/main/java/org/commonmark/ext/heading/anchor/internal/HeadingIdAttributeProvider.java

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,46 +2,54 @@
22

33
import org.commonmark.ext.heading.anchor.IdGenerator;
44
import org.commonmark.renderer.html.AttributeProvider;
5-
import org.commonmark.renderer.html.AttributeProviderContext;
65
import org.commonmark.node.*;
76

7+
import java.util.ArrayList;
8+
import java.util.List;
89
import java.util.Map;
910

1011
public class HeadingIdAttributeProvider implements AttributeProvider {
1112

1213
private final IdGenerator idGenerator;
13-
private final AttributeProviderContext context;
1414

15-
private HeadingIdAttributeProvider(String defaultId, String prefix, String suffix, AttributeProviderContext context) {
15+
private HeadingIdAttributeProvider(String defaultId, String prefix, String suffix) {
1616
idGenerator = IdGenerator.builder()
1717
.defaultId(defaultId)
1818
.prefix(prefix)
1919
.suffix(suffix)
2020
.build();
21-
this.context = context;
2221
}
2322

24-
public static HeadingIdAttributeProvider create(String defaultId, String prefix, String suffix, AttributeProviderContext context) {
25-
return new HeadingIdAttributeProvider(defaultId, prefix, suffix, context);
23+
public static HeadingIdAttributeProvider create(String defaultId, String prefix, String suffix) {
24+
return new HeadingIdAttributeProvider(defaultId, prefix, suffix);
2625
}
2726

2827
@Override
2928
public void setAttributes(Node node, String tagName, final Map<String, String> attributes) {
29+
3030
if (node instanceof Heading) {
31-
StringBuilder text = new StringBuilder();
32-
node.accept(new AbstractVisitor(context.getNodeTraversal(node)) {
31+
32+
final List<String> wordList = new ArrayList<>();
33+
34+
node.accept(new AbstractVisitor() {
3335
@Override
34-
public void visit(Text textNode) {
35-
text.append(textNode.getLiteral());
36+
public void visit(Text text) {
37+
wordList.add(text.getLiteral());
3638
}
3739

3840
@Override
3941
public void visit(Code code) {
40-
text.append(code.getLiteral());
42+
wordList.add(code.getLiteral());
4143
}
4244
});
4345

44-
attributes.put("id", idGenerator.generateId(text.toString().trim().toLowerCase()));
46+
String finalString = "";
47+
for (String word : wordList) {
48+
finalString += word;
49+
}
50+
finalString = finalString.trim().toLowerCase();
51+
52+
attributes.put("id", idGenerator.generateId(finalString));
4553
}
4654
}
4755
}

commonmark-ext-heading-anchor/src/test/java/org/commonmark/ext/heading/anchor/HeadingAnchorConfigurationTest.java

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package org.commonmark.ext.heading.anchor;
22

33
import org.commonmark.Extension;
4-
import org.commonmark.node.NodeTraversal;
54
import org.commonmark.parser.Parser;
65
import org.commonmark.renderer.html.HtmlRenderer;
76
import org.junit.jupiter.api.Test;
@@ -51,16 +50,6 @@ public void testSuffixAddedToHeader() {
5150
assertThat(doRender(renderer, "# text")).isEqualTo("<h1 id=\"text-post\">text</h1>\n");
5251
}
5352

54-
@Test
55-
public void testTraversalLimitAppliesToHeadingIdGeneration() {
56-
HtmlRenderer renderer = HtmlRenderer.builder()
57-
.extensions(List.of(HeadingAnchorExtension.create()))
58-
.nodeTraversal(NodeTraversal.succeedLossy(2))
59-
.build();
60-
61-
assertThat(doRender(renderer, "# foo *bar*")).isEqualTo("<h1 id=\"foo\">foo <em></em></h1>\n");
62-
}
63-
6453
private String doRender(HtmlRenderer renderer, String text) {
6554
return renderer.render(PARSER.parse(text));
6655
}

commonmark-ext-image-attributes/src/main/java/org/commonmark/ext/image/attributes/ImageAttributesExtension.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public void extend(HtmlRenderer.Builder rendererBuilder) {
3838
rendererBuilder.attributeProviderFactory(new AttributeProviderFactory() {
3939
@Override
4040
public AttributeProvider create(AttributeProviderContext context) {
41-
return ImageAttributesAttributeProvider.create(context);
41+
return ImageAttributesAttributeProvider.create();
4242
}
4343
});
4444
}

commonmark-ext-image-attributes/src/main/java/org/commonmark/ext/image/attributes/internal/ImageAttributesAttributeProvider.java

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,30 +6,26 @@
66
import org.commonmark.node.Image;
77
import org.commonmark.node.Node;
88
import org.commonmark.renderer.html.AttributeProvider;
9-
import org.commonmark.renderer.html.AttributeProviderContext;
109

1110
import java.util.*;
1211

1312
public class ImageAttributesAttributeProvider implements AttributeProvider {
1413

15-
private final AttributeProviderContext context;
16-
17-
private ImageAttributesAttributeProvider(AttributeProviderContext context) {
18-
this.context = context;
14+
private ImageAttributesAttributeProvider() {
1915
}
2016

21-
public static ImageAttributesAttributeProvider create(AttributeProviderContext context) {
22-
return new ImageAttributesAttributeProvider(context);
17+
public static ImageAttributesAttributeProvider create() {
18+
return new ImageAttributesAttributeProvider();
2319
}
2420

2521
@Override
2622
public void setAttributes(Node node, String tagName, final Map<String, String> attributes) {
2723
if (node instanceof Image) {
28-
node.accept(new AbstractVisitor(context.getNodeTraversal(node)) {
24+
node.accept(new AbstractVisitor() {
2925
@Override
30-
public void visit(CustomNode customNode) {
31-
if (customNode instanceof ImageAttributes) {
32-
ImageAttributes imageAttributes = (ImageAttributes) customNode;
26+
public void visit(CustomNode node) {
27+
if (node instanceof ImageAttributes) {
28+
ImageAttributes imageAttributes = (ImageAttributes) node;
3329
for (Map.Entry<String, String> entry : imageAttributes.getAttributes().entrySet()) {
3430
attributes.put(entry.getKey(), entry.getValue());
3531
}

commonmark-ext-image-attributes/src/test/java/org/commonmark/ext/image/attributes/ImageAttributesTest.java

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
package org.commonmark.ext.image.attributes;
22

33
import org.commonmark.Extension;
4-
import org.commonmark.node.Image;
54
import org.commonmark.node.Node;
6-
import org.commonmark.node.NodeTraversal;
75
import org.commonmark.node.Paragraph;
86
import org.commonmark.node.SourceSpan;
97
import org.commonmark.parser.IncludeSourceSpans;
@@ -136,23 +134,6 @@ public void sourceSpans() {
136134
assertThat(text.getSourceSpans()).isEqualTo(List.of(SourceSpan.of(0, 0, 0, 19)));
137135
}
138136

139-
@Test
140-
public void traversalLimitSkipsImageAttributesWithoutUnlinkingNodes() {
141-
Node document = PARSER.parse("![text](/url.png){height=5}");
142-
Paragraph paragraph = (Paragraph) document.getFirstChild();
143-
Image image = (Image) paragraph.getFirstChild();
144-
145-
assertThat(image.getLastChild()).isInstanceOf(ImageAttributes.class);
146-
147-
HtmlRenderer renderer = HtmlRenderer.builder()
148-
.extensions(EXTENSIONS)
149-
.nodeTraversal(NodeTraversal.succeedLossy(2))
150-
.build();
151-
152-
assertThat(renderer.render(document)).isEqualTo("<p><img src=\"/url.png\" alt=\"\" /></p>\n");
153-
assertThat(image.getLastChild()).isInstanceOf(ImageAttributes.class);
154-
}
155-
156137
@Override
157138
protected String render(String source) {
158139
return RENDERER.render(PARSER.parse(source));
Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,9 @@
11
package org.commonmark.renderer.html;
22

3-
import org.commonmark.node.Node;
4-
import org.commonmark.node.NodeTraversal;
5-
63
/**
74
* The context for attribute providers.
5+
* <p>Note: There are currently no methods here, this is for future extensibility.</p>
86
* <p><em>This interface is not intended to be implemented by clients.</em></p>
97
*/
108
public interface AttributeProviderContext {
11-
12-
/**
13-
* @return the configured traversal rebased to the current callback node
14-
*/
15-
default NodeTraversal getNodeTraversal() {
16-
return NodeTraversal.unlimited();
17-
}
18-
19-
/**
20-
* @param node a node within the current render root
21-
* @return the configured traversal rebased to the supplied node
22-
*/
23-
default NodeTraversal getNodeTraversal(Node node) {
24-
return NodeTraversal.unlimited();
25-
}
269
}

commonmark/src/main/java/org/commonmark/renderer/html/CoreHtmlNodeRenderer.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import java.util.LinkedHashMap;
77
import java.util.Map;
88
import java.util.Set;
9+
import java.util.function.Function;
910

1011
/**
1112
* The node renderer that renders all the core nodes (comes last in the order of node renderers).
@@ -14,10 +15,16 @@ public class CoreHtmlNodeRenderer extends AbstractVisitor implements NodeRendere
1415

1516
protected final HtmlNodeRendererContext context;
1617
private final HtmlWriter html;
18+
private final Function<Node, NodeTraversal> nodeTraversalProvider;
1719

1820
public CoreHtmlNodeRenderer(HtmlNodeRendererContext context) {
21+
this(context, node -> NodeTraversal.unlimited());
22+
}
23+
24+
CoreHtmlNodeRenderer(HtmlNodeRendererContext context, Function<Node, NodeTraversal> nodeTraversalProvider) {
1925
this.context = context;
2026
this.html = context.getWriter();
27+
this.nodeTraversalProvider = nodeTraversalProvider;
2128
}
2229

2330
@Override
@@ -184,7 +191,7 @@ public void visit(OrderedList orderedList) {
184191
public void visit(Image image) {
185192
String url = image.getDestination();
186193

187-
AltTextVisitor altTextVisitor = new AltTextVisitor(context.getNodeTraversal(image));
194+
AltTextVisitor altTextVisitor = new AltTextVisitor(nodeTraversalProvider.apply(image));
188195
image.accept(altTextVisitor);
189196
String altText = altTextVisitor.getAltText();
190197

0 commit comments

Comments
 (0)