Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,8 @@
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.9</source>
<target>1.9</target>
<source>17</source>
<target>17</target>
</configuration>
</plugin>
<plugin>
Expand Down
45 changes: 43 additions & 2 deletions src/main/java/org/asciidoctor/ExportDoclet.java
Original file line number Diff line number Diff line change
Expand Up @@ -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<String> 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<String> getNames() {
return someOption;
}

@Override
public String getParameters() {
return "boolean";
}

@Override
public boolean process(String opt, List<String> arguments) {
includeCaptions = arguments.get(0).equalsIgnoreCase("true");
return true;
}
}
};
return new HashSet<>(Arrays.asList(options));
}

@Override
Expand All @@ -51,6 +92,6 @@ public SourceVersion getSupportedSourceVersion() {

@Override
public boolean run(DocletEnvironment environment) {
return new ExportRenderer(environment).render();
return new ExportRenderer(environment, includeCaptions).render();
}
}
23 changes: 16 additions & 7 deletions src/main/java/org/asciidoctor/ExportRenderer.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
*/
package org.asciidoctor;

import com.sun.javadoc.*;
import jdk.javadoc.doclet.*;

import javax.lang.model.element.*;
Expand All @@ -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;
}

/**
Expand Down Expand Up @@ -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()));

Expand All @@ -100,20 +105,20 @@ 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();
}

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);
}

/**
Expand All @@ -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) {
Expand Down