Skip to content

Commit 5f2da8f

Browse files
committed
More progress
1 parent 56439dc commit 5f2da8f

File tree

5 files changed

+55
-7
lines changed

5 files changed

+55
-7
lines changed

asciidoctor-parser-doxia-module/src/main/java/org/asciidoctor/maven/site/parser/NodeSinker.java

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,10 @@
88
import org.asciidoctor.maven.site.parser.processors.DescriptionListNodeProcessor;
99
import org.asciidoctor.maven.site.parser.processors.DocumentNodeProcessor;
1010
import org.asciidoctor.maven.site.parser.processors.ImageNodeProcessor;
11+
import org.asciidoctor.maven.site.parser.processors.ListItemNodeProcessor;
1112
import org.asciidoctor.maven.site.parser.processors.ListingNodeProcessor;
1213
import org.asciidoctor.maven.site.parser.processors.LiteralNodeProcessor;
14+
import org.asciidoctor.maven.site.parser.processors.NoOpNodeProcessor;
1315
import org.asciidoctor.maven.site.parser.processors.OrderedListNodeProcessor;
1416
import org.asciidoctor.maven.site.parser.processors.ParagraphNodeProcessor;
1517
import org.asciidoctor.maven.site.parser.processors.PreambleNodeProcessor;
@@ -25,21 +27,26 @@ public class NodeSinker {
2527

2628
private final List<NodeProcessor> nodeProcessors;
2729

30+
private final NodeProcessor noOpProcessor;
31+
2832
// TODO this should not be public
2933
public NodeSinker(Sink sink) {
3034
nodeProcessors = Arrays.asList(
35+
new DescriptionListNodeProcessor(sink, this),
3136
new DocumentNodeProcessor(sink, this),
3237
new ImageNodeProcessor(sink, this),
38+
new ListItemNodeProcessor(sink, this),
39+
new ListingNodeProcessor(sink, this),
3340
new ListingNodeProcessor(sink, this),
3441
new LiteralNodeProcessor(sink, this),
42+
new OrderedListNodeProcessor(sink, this),
3543
new ParagraphNodeProcessor(sink, this),
3644
new PreambleNodeProcessor(sink, this),
3745
new SectionNodeProcessor(sink, this),
3846
new TableNodeProcessor(sink, this),
39-
new UnorderedListNodeProcessor(sink, this),
40-
new OrderedListNodeProcessor(sink, this),
41-
new DescriptionListNodeProcessor(sink, this)
47+
new UnorderedListNodeProcessor(sink, this)
4248
);
49+
noOpProcessor = new NoOpNodeProcessor(sink, this);
4350
}
4451

4552
/**
@@ -49,7 +56,7 @@ private NodeProcessor get(StructuralNode node) {
4956
return nodeProcessors.stream()
5057
.filter(nodeProcessor -> nodeProcessor.applies(node))
5158
.findFirst()
52-
.get();
59+
.orElse(noOpProcessor);
5360
}
5461

5562
public void sink(StructuralNode node) {

asciidoctor-parser-doxia-module/src/main/java/org/asciidoctor/maven/site/parser/processors/DescriptionListNodeProcessor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ public void process(StructuralNode node) {
5858
if (description.getBlocks().isEmpty()) {
5959
sink.rawText(description.getText());
6060
} else {
61-
sink(node);
61+
super.sink(description);
6262
}
6363
sink.definition_();
6464
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package org.asciidoctor.maven.site.parser.processors;
2+
3+
import java.util.List;
4+
5+
import org.apache.maven.doxia.sink.Sink;
6+
import org.asciidoctor.ast.StructuralNode;
7+
import org.asciidoctor.maven.site.parser.AsciidoctorAstDoxiaParser;
8+
import org.asciidoctor.maven.site.parser.NodeProcessor;
9+
import org.asciidoctor.maven.site.parser.NodeSinker;
10+
import org.slf4j.LoggerFactory;
11+
12+
/**
13+
* Fallback NodeProcessor to collect nodes that have not dedicated processor.
14+
*/
15+
public class NoOpNodeProcessor extends AbstractSinkNodeProcessor implements NodeProcessor {
16+
17+
private final org.slf4j.Logger logger = LoggerFactory.getLogger(AsciidoctorAstDoxiaParser.class);
18+
19+
/**
20+
* Constructor.
21+
*
22+
* @param sink Doxia {@link Sink}
23+
* @param nodeSinker
24+
*/
25+
public NoOpNodeProcessor(Sink sink, NodeSinker nodeSinker) {
26+
super(sink, nodeSinker);
27+
}
28+
29+
@Override
30+
public boolean applies(StructuralNode node) {
31+
return false;
32+
}
33+
34+
@Override
35+
public void process(StructuralNode node) {
36+
final List<StructuralNode> blocks = node.getBlocks();
37+
38+
logger.warn("Fallback behaviour for node: {}", node.getNodeName());
39+
if (!blocks.isEmpty()) {
40+
blocks.forEach(this::sink);
41+
}
42+
}
43+
}

asciidoctor-parser-doxia-module/src/test/java/org/asciidoctor/maven/site/parser/processors/SectionNodeProcessorTest.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ class SectionNodeProcessorTest {
2020
private NodeProcessor nodeProcessor;
2121
private StringWriter sinkWriter;
2222

23-
2423
@Test
2524
void should_convert_document_title() {
2625
String content = documentWithSections();

asciidoctor-parser-doxia-module/src/test/java/org/asciidoctor/maven/site/parser/processors/TableNodeProcessorTest.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ class TableNodeProcessorTest {
3636
private NodeProcessor nodeProcessor;
3737
private StringWriter sinkWriter;
3838

39-
4039
@Test
4140
void should_convert_table_with_header() {
4241
String content = documentWithTable(true, noCaption, emptyList());

0 commit comments

Comments
 (0)