Skip to content

Commit 56439dc

Browse files
committed
WIP
1 parent 3c79272 commit 56439dc

28 files changed

+238
-231
lines changed

asciidoctor-maven-commons/src/main/java/org/asciidoctor/maven/site/HeadParser.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
* This allows Doxia to build:
1010
* - breadcrumbs
1111
* - HTML head's meta elements
12+
*
13+
* @since 3.0.0
1214
*/
1315
public class HeadParser {
1416

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,8 +110,7 @@ public void parse(Reader reader, Sink sink, String reference) throws ParseExcept
110110
new HeadParser(sink)
111111
.parse(headerMetadata);
112112

113-
// TODO do body inside the DocumentNodeProcessor
114-
new NodeProcessorProvider(sink)
113+
new NodeSinker(sink)
115114
.sink(document);
116115
}
117116

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,12 @@
2121
* @author abelsromero
2222
* @since 3.1.0
2323
*/
24-
public class NodeProcessorProvider {
24+
public class NodeSinker {
2525

2626
private final List<NodeProcessor> nodeProcessors;
2727

28-
NodeProcessorProvider(Sink sink) {
28+
// TODO this should not be public
29+
public NodeSinker(Sink sink) {
2930
nodeProcessors = Arrays.asList(
3031
new DocumentNodeProcessor(sink, this),
3132
new ImageNodeProcessor(sink, this),

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

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import org.apache.maven.doxia.sink.Sink;
44
import org.asciidoctor.ast.ContentNode;
55
import org.asciidoctor.ast.StructuralNode;
6-
import org.asciidoctor.maven.site.parser.NodeProcessorProvider;
6+
import org.asciidoctor.maven.site.parser.NodeSinker;
77

88
/**
99
* Recommended base case to build a {@link org.asciidoctor.maven.site.parser.NodeProcessor}.
@@ -14,17 +14,17 @@
1414
public class AbstractSinkNodeProcessor {
1515

1616
private final Sink sink;
17-
18-
private final NodeProcessorProvider nodeProcessorProvider;
17+
private final NodeSinker nodeSinker;
1918

2019
/**
2120
* Constructor.
2221
*
23-
* @param sink Doxia {@link Sink}
22+
* @param sink Doxia {@link Sink}
23+
* @param nodeSinker
2424
*/
25-
public AbstractSinkNodeProcessor(Sink sink, NodeProcessorProvider nodeProcessorProvider) {
25+
public AbstractSinkNodeProcessor(Sink sink, NodeSinker nodeSinker) {
2626
this.sink = sink;
27-
this.nodeProcessorProvider = nodeProcessorProvider;
27+
this.nodeSinker = nodeSinker;
2828
}
2929

3030
/**
@@ -36,9 +36,15 @@ protected Sink getSink() {
3636
return sink;
3737
}
3838

39-
// TODO rethink names
40-
protected void next(StructuralNode node) {
41-
nodeProcessorProvider.sink(node);
39+
/**
40+
* Delegates the processing of the new node to the appropriate processor.
41+
* Similar to {@link org.asciidoctor.maven.site.parser.NodeProcessor#process(StructuralNode)}
42+
* but this selects the processor from the ones available.
43+
*
44+
* @param node Node to process
45+
*/
46+
protected void sink(StructuralNode node) {
47+
nodeSinker.sink(node);
4248
}
4349

4450
/**

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import org.asciidoctor.ast.ListItem;
99
import org.asciidoctor.ast.StructuralNode;
1010
import org.asciidoctor.maven.site.parser.NodeProcessor;
11-
import org.asciidoctor.maven.site.parser.NodeProcessorProvider;
11+
import org.asciidoctor.maven.site.parser.NodeSinker;
1212

1313
/**
1414
* Description list processor.
@@ -21,11 +21,11 @@ public class DescriptionListNodeProcessor extends AbstractSinkNodeProcessor impl
2121
/**
2222
* Constructor.
2323
*
24-
* @param sink Doxia {@link Sink}
25-
* @param nodeProcessorProvider
24+
* @param sink Doxia {@link Sink}
25+
* @param nodeSinker
2626
*/
27-
public DescriptionListNodeProcessor(Sink sink, NodeProcessorProvider nodeProcessorProvider) {
28-
super(sink, nodeProcessorProvider);
27+
public DescriptionListNodeProcessor(Sink sink, NodeSinker nodeSinker) {
28+
super(sink, nodeSinker);
2929
}
3030

3131
@Override
@@ -58,7 +58,7 @@ public void process(StructuralNode node) {
5858
if (description.getBlocks().isEmpty()) {
5959
sink.rawText(description.getText());
6060
} else {
61-
next(node);
61+
sink(node);
6262
}
6363
sink.definition_();
6464
}

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

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import org.apache.maven.doxia.sink.Sink;
44
import org.asciidoctor.ast.StructuralNode;
55
import org.asciidoctor.maven.site.parser.NodeProcessor;
6-
import org.asciidoctor.maven.site.parser.NodeProcessorProvider;
6+
import org.asciidoctor.maven.site.parser.NodeSinker;
77

88
/**
99
* Root document processor.
@@ -18,8 +18,8 @@ public class DocumentNodeProcessor extends AbstractSinkNodeProcessor implements
1818
*
1919
* @param sink Doxia {@link Sink}
2020
*/
21-
public DocumentNodeProcessor(Sink sink, NodeProcessorProvider nodeProcessorProvider) {
22-
super(sink, nodeProcessorProvider);
21+
public DocumentNodeProcessor(Sink sink, NodeSinker nodeSinker) {
22+
super(sink, nodeSinker);
2323
}
2424

2525
@Override
@@ -29,13 +29,17 @@ public boolean applies(StructuralNode node) {
2929

3030
@Override
3131
public void process(StructuralNode node) {
32-
getSink().body();
33-
// NOTE: H1 generation fixed in doxia 2.0.0-MX
34-
getSink().rawText(String.format("<h1>%s</h1>", node.getTitle()));
32+
final Sink sink = getSink();
33+
34+
sink.body();
35+
// TODO review how this fits with Section titles also being 1
36+
sink.sectionTitle1();
37+
sink.rawText(node.getTitle());
38+
sink.sectionTitle1_();
3539

3640
node.getBlocks()
37-
.forEach(super::next);
41+
.forEach(this::sink);
3842

39-
getSink().body_();
43+
sink.body_();
4044
}
4145
}

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import org.apache.maven.doxia.sink.impl.SinkEventAttributeSet;
88
import org.asciidoctor.ast.StructuralNode;
99
import org.asciidoctor.maven.site.parser.NodeProcessor;
10-
import org.asciidoctor.maven.site.parser.NodeProcessorProvider;
10+
import org.asciidoctor.maven.site.parser.NodeSinker;
1111

1212
import static org.asciidoctor.maven.commons.StringUtils.isBlank;
1313

@@ -22,11 +22,11 @@ public class ImageNodeProcessor extends AbstractSinkNodeProcessor implements Nod
2222
/**
2323
* Constructor.
2424
*
25-
* @param sink Doxia {@link Sink}
26-
* @param nodeProcessorProvider
25+
* @param sink Doxia {@link Sink}
26+
* @param nodeSinker
2727
*/
28-
public ImageNodeProcessor(Sink sink, NodeProcessorProvider nodeProcessorProvider) {
29-
super(sink, nodeProcessorProvider);
28+
public ImageNodeProcessor(Sink sink, NodeSinker nodeSinker) {
29+
super(sink, nodeSinker);
3030
}
3131

3232
@Override

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import org.asciidoctor.ast.ListItem;
55
import org.asciidoctor.ast.StructuralNode;
66
import org.asciidoctor.maven.site.parser.NodeProcessor;
7-
import org.asciidoctor.maven.site.parser.NodeProcessorProvider;
7+
import org.asciidoctor.maven.site.parser.NodeSinker;
88

99
/**
1010
* List items processor, including numbered and unnumbered.
@@ -17,11 +17,11 @@ public class ListItemNodeProcessor extends AbstractSinkNodeProcessor implements
1717
/**
1818
* Constructor.
1919
*
20-
* @param sink Doxia {@link Sink}
21-
* @param nodeProcessorProvider
20+
* @param sink Doxia {@link Sink}
21+
* @param nodeSinker
2222
*/
23-
public ListItemNodeProcessor(Sink sink, NodeProcessorProvider nodeProcessorProvider) {
24-
super(sink, nodeProcessorProvider);
23+
public ListItemNodeProcessor(Sink sink, NodeSinker nodeSinker) {
24+
super(sink, nodeSinker);
2525
}
2626

2727
@Override
@@ -48,7 +48,7 @@ public void process(StructuralNode node) {
4848
final String text = item.getText();
4949
sink.rawText(text == null ? "" : text);
5050

51-
node.getBlocks().forEach(this::next);
51+
node.getBlocks().forEach(this::sink);
5252

5353
switch (listType) {
5454
case ordered:

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

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import org.asciidoctor.jruby.ast.impl.BlockImpl;
66
import org.asciidoctor.maven.commons.StringUtils;
77
import org.asciidoctor.maven.site.parser.NodeProcessor;
8-
import org.asciidoctor.maven.site.parser.NodeProcessorProvider;
8+
import org.asciidoctor.maven.site.parser.NodeSinker;
99

1010
import static org.asciidoctor.maven.commons.StringUtils.isNotBlank;
1111

@@ -25,11 +25,11 @@ public class ListingNodeProcessor extends AbstractSinkNodeProcessor implements N
2525
/**
2626
* Constructor.
2727
*
28-
* @param sink Doxia {@link Sink}
29-
* @param nodeProcessorProvider
28+
* @param sink Doxia {@link Sink}
29+
* @param nodeSinker
3030
*/
31-
public ListingNodeProcessor(Sink sink, NodeProcessorProvider nodeProcessorProvider) {
32-
super(sink, nodeProcessorProvider);
31+
public ListingNodeProcessor(Sink sink, NodeSinker nodeSinker) {
32+
super(sink, nodeSinker);
3333
}
3434

3535
@Override
@@ -56,7 +56,7 @@ public void process(StructuralNode node) {
5656
}
5757

5858
contentBuilder.append("<pre class=\"")
59-
.append(FLUIDO_SKIN_SOURCE_HIGHLIGHTER);
59+
.append(FLUIDO_SKIN_SOURCE_HIGHLIGHTER);
6060
if (isLinenumsEnabled(node))
6161
contentBuilder.append(" linenums");
6262

@@ -67,9 +67,7 @@ public void process(StructuralNode node) {
6767
contentBuilder.append("<pre>");
6868
}
6969

70-
// TODO validate delegation works
71-
node.getBlocks().forEach(this::next);
72-
//contentBuilder.append(((BlockImpl) node).getSource());
70+
contentBuilder.append(((BlockImpl) node).getSource());
7371

7472
if (isSourceBlock) {
7573
contentBuilder.append("</code>");
@@ -83,7 +81,7 @@ public void process(StructuralNode node) {
8381
private boolean isLinenumsEnabled(StructuralNode node) {
8482
// linenums attribute can be set with empty string value
8583
return LINENUMS_ATTRIBUTE.equals(node.getAttribute("linenums"))
86-
|| node.getAttribute(LINENUMS_OPTION_ATTRIBUTE) != null;
84+
|| node.getAttribute(LINENUMS_OPTION_ATTRIBUTE) != null;
8785
}
8886

8987
private boolean isSourceBlock(String language, String style) {

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

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import org.asciidoctor.ast.StructuralNode;
55
import org.asciidoctor.jruby.ast.impl.BlockImpl;
66
import org.asciidoctor.maven.site.parser.NodeProcessor;
7-
import org.asciidoctor.maven.site.parser.NodeProcessorProvider;
7+
import org.asciidoctor.maven.site.parser.NodeSinker;
88

99
/**
1010
* Literal (aka. monospace) text processor.
@@ -17,11 +17,11 @@ public class LiteralNodeProcessor extends AbstractSinkNodeProcessor implements N
1717
/**
1818
* Constructor.
1919
*
20-
* @param sink Doxia {@link Sink}
21-
* @param nodeProcessorProvider
20+
* @param sink Doxia {@link Sink}
21+
* @param nodeSinker
2222
*/
23-
public LiteralNodeProcessor(Sink sink, NodeProcessorProvider nodeProcessorProvider) {
24-
super(sink, nodeProcessorProvider);
23+
public LiteralNodeProcessor(Sink sink, NodeSinker nodeSinker) {
24+
super(sink, nodeSinker);
2525
}
2626

2727
@Override
@@ -35,11 +35,8 @@ public void process(StructuralNode node) {
3535

3636
sink.division();
3737
sink.rawText("<pre>");
38-
// TODO see if this can be delegated now
39-
node.getBlocks().forEach(this::next);
40-
// contentBuilder.append(((BlockImpl) node).getSource());
41-
42-
sink.rawText("/<pre>");
38+
sink.rawText(((BlockImpl) node).getSource());
39+
sink.rawText("</pre>");
4340
sink.division_();
4441
}
4542
}

0 commit comments

Comments
 (0)