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 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 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) {