diff --git a/pom.xml b/pom.xml
index e1c20c0..f5a5315 100644
--- a/pom.xml
+++ b/pom.xml
@@ -51,8 +51,8 @@
maven-compiler-plugin
3.1
- 1.9
- 1.9
+ 17
+ 17
diff --git a/src/main/java/org/asciidoctor/ExportDoclet.java b/src/main/java/org/asciidoctor/ExportDoclet.java
index 0215ba5..04babd0 100644
--- a/src/main/java/org/asciidoctor/ExportDoclet.java
+++ b/src/main/java/org/asciidoctor/ExportDoclet.java
@@ -39,9 +39,50 @@ public String getName() {
return "ExportDoclet";
}
+ private boolean includeCaptions = false;
+
@Override
public Set extends Option> getSupportedOptions() {
- return new StandardDoclet().getSupportedOptions();
+ Option[] options = {
+ new Option() {
+ private final List someOption = Arrays.asList(
+ "--captions",
+ "-cp"
+ );
+
+ @Override
+ public int getArgumentCount() {
+ return 1;
+ }
+
+ @Override
+ public String getDescription() {
+ return "include captions in output";
+ }
+
+ @Override
+ public Option.Kind getKind() {
+ return Kind.STANDARD;
+ }
+
+ @Override
+ public List getNames() {
+ return someOption;
+ }
+
+ @Override
+ public String getParameters() {
+ return "boolean";
+ }
+
+ @Override
+ public boolean process(String opt, List arguments) {
+ includeCaptions = arguments.get(0).equalsIgnoreCase("true");
+ return true;
+ }
+ }
+ };
+ return new HashSet<>(Arrays.asList(options));
}
@Override
@@ -51,6 +92,6 @@ public SourceVersion getSupportedSourceVersion() {
@Override
public boolean run(DocletEnvironment environment) {
- return new ExportRenderer(environment).render();
+ return new ExportRenderer(environment, includeCaptions).render();
}
}
diff --git a/src/main/java/org/asciidoctor/ExportRenderer.java b/src/main/java/org/asciidoctor/ExportRenderer.java
index cabde5a..3200a67 100644
--- a/src/main/java/org/asciidoctor/ExportRenderer.java
+++ b/src/main/java/org/asciidoctor/ExportRenderer.java
@@ -15,7 +15,6 @@
*/
package org.asciidoctor;
-import com.sun.javadoc.*;
import jdk.javadoc.doclet.*;
import javax.lang.model.element.*;
@@ -40,9 +39,15 @@ public class ExportRenderer {
* From this root all other program structure information can be extracted.
*/
private final DocletEnvironment rootDoc;
+ private final boolean includeCaptions;
public ExportRenderer(DocletEnvironment rootDoc){
+ this(rootDoc, false);
+ }
+
+ public ExportRenderer(DocletEnvironment rootDoc, boolean includeCaptions){
this.rootDoc = rootDoc;
+ this.includeCaptions = includeCaptions;
}
/**
@@ -91,7 +96,7 @@ private void renderPackage(Element packageElement){
}
private void renderEnclosedElements(Element rootElement, PrintWriter writer) {
- outputText(rootElement, writer);
+ outputText(rootElement, writer, 1);
renderRootElements(new HashSet<>(rootElement.getEnclosedElements()));
@@ -100,7 +105,7 @@ private void renderEnclosedElements(Element rootElement, PrintWriter writer) {
subElements.removeAll(ElementFilter.packagesIn(rootElement.getEnclosedElements()));
for(Element subElement : subElements) {
- outputText(subElement, writer);
+ outputText(subElement, writer, 2);
}
writer.flush();
@@ -108,12 +113,12 @@ private void renderEnclosedElements(Element rootElement, PrintWriter writer) {
private void outputText(List extends Element> elements, PrintWriter writer) {
for (Element element : elements) {
- outputText(element.getSimpleName().toString(), rootDoc.getElementUtils().getDocComment(element), writer);
+ outputText(element.getSimpleName().toString(), rootDoc.getElementUtils().getDocComment(element), writer, 2);
}
}
- private void outputText(Element element, PrintWriter writer) {
- outputText(element.getSimpleName().toString(), rootDoc.getElementUtils().getDocComment(element), writer);
+ private void outputText(Element element, PrintWriter writer, int level) {
+ outputText(element.getSimpleName().toString(), rootDoc.getElementUtils().getDocComment(element), writer, level);
}
/**
@@ -124,10 +129,14 @@ private void outputText(Element element, PrintWriter writer) {
* @param comment the javadoc comment to export
* @param writer the link:PrintWriter[] to be used to export the javadoc comment to an AsciiDoc file
*/
- private void outputText(String tag, String comment, PrintWriter writer) {
+ private void outputText(String tag, String comment, PrintWriter writer, int level) {
writer.println("// tag::" + tag + "[]");
+ if (includeCaptions) {
+ writer.println(String.format("%s %s", ("=".repeat(level)), tag));
+ }
writer.println(cleanJavadocInput(comment));
writer.println("// end::" + tag + "[]");
+ writer.println();
}
private String cleanJavadocInput(String input) {