diff --git a/README.md b/README.md
index d6f6f02..b556810 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,8 @@
A doclet to output javadoc as XML
=================================
-This library provides a doclet to output the javadoc comments from Java source code to a XML, Restructured Text (*.rst) document.
+This library provides a doclet to output the javadoc comments from Java source code to a XML or a Restructured Text (*.rst) document.
+
All modern JDKs 11, 17 and 21 are supported (via `languageVersion.set(JavaLanguageVersion.of(11)` enforcing JavaDoc 11).
Planned support for Markdown (*.md), Docbook XML and ASCII Doctor (*.adoc). Sponsors or Contributors are most welcome.
@@ -35,17 +36,14 @@ dependencies {
tasks.register('xmldoc', Javadoc) {
source = sourceSets.main.allJava
- // beware, that this folder will be overwittten by Gradle
+ // beware, that this folder will be overwritten hard by Gradle
destinationDir = reporting.file("xmlDoclet")
options.docletpath = configurations.xmlDoclet.files.asType(List)
options.doclet = "com.github.markusbernhardt.xmldoclet.XmlDoclet"
- // @see https://github.com/gradle/gradle/issues/11898#issue-549900869
- title = null
- options.noTimestamp(false)
-
// transform to Restructured Text and copy to Sphinx Source folder
options.addBooleanOption("rst", true)
+ options.addStringOption("basePackage", "net.sf.jsqlparser")
doLast {
copy {
@@ -88,7 +86,7 @@ If you are using maven you can use this library by adding the following report t
com.manticore-projects.tools
xml-doclet
- 1.1.3
+ 1.2.1
@@ -122,3 +120,5 @@ Options
-adoc Not implemented yet: Write Ascii Doctor (*.adoc)
Default: false
+
+ -basePackage Shortens the Qualified Names by the Base Package name
diff --git a/build.gradle b/build.gradle
index 0f964de..90ae91f 100644
--- a/build.gradle
+++ b/build.gradle
@@ -296,7 +296,6 @@ configurations.configureEach {
force 'org.dom4j:dom4j:+'
// avoid vulnerable optional artifacts
- //exclude(group: 'org.dom4j')
exclude(group: 'org.jdom')
}
}
diff --git a/src/main/java/com/github/markusbernhardt/xmldoclet/XmlDoclet.java b/src/main/java/com/github/markusbernhardt/xmldoclet/XmlDoclet.java
index fa0e618..8da7f4e 100644
--- a/src/main/java/com/github/markusbernhardt/xmldoclet/XmlDoclet.java
+++ b/src/main/java/com/github/markusbernhardt/xmldoclet/XmlDoclet.java
@@ -10,6 +10,7 @@
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.HashMap;
import java.util.List;
import java.util.ListIterator;
@@ -37,6 +38,7 @@
import net.sf.saxon.s9api.*;
import java.io.OutputStream;
+import java.util.Map;
import java.util.logging.Level;
/**
@@ -116,9 +118,33 @@ public class XmlDoclet {
OptionBuilder.withArgName("filename");
OptionBuilder.isRequired(false);
- OptionBuilder.hasArg();
+ OptionBuilder.hasArgs(1);
OptionBuilder.withDescription("Name of the output file.\nDefault: javadoc.xml");
OPTIONS.addOption(OptionBuilder.create("filename"));
+
+ OptionBuilder.withArgName("basePackage");
+ OptionBuilder.isRequired(false);
+ OptionBuilder.hasArgs(1);
+ OptionBuilder.withDescription("Name of the base package.\n");
+ OPTIONS.addOption(OptionBuilder.create("basePackage"));
+
+ OptionBuilder.withArgName("doctitle");
+ OptionBuilder.isRequired(false);
+ OptionBuilder.hasArgs(1);
+ OptionBuilder.withDescription("Document Title\n");
+ OPTIONS.addOption(OptionBuilder.create("doctitle"));
+
+ OptionBuilder.withArgName("windowtitle");
+ OptionBuilder.isRequired(false);
+ OptionBuilder.hasArgs(1);
+ OptionBuilder.withDescription("Window Title\n");
+ OPTIONS.addOption(OptionBuilder.create("windowtitle"));
+
+ OptionBuilder.withArgName("noTimestamp");
+ OptionBuilder.isRequired(false);
+ OptionBuilder.hasArgs(0);
+ OptionBuilder.withDescription("No Timestamp.\n");
+ OPTIONS.addOption(OptionBuilder.create("notimestamp"));
}
/**
@@ -181,7 +207,8 @@ public static boolean start(RootDoc rootDoc) {
return true;
}
- public static void transform(InputStream xsltInputStream, File xmlFile, File outFile)
+ public static void transform(InputStream xsltInputStream, File xmlFile, File outFile,
+ Map parameters)
throws IOException, SaxonApiException {
try (InputStream xmlInputStream = new FileInputStream(xmlFile);
@@ -212,6 +239,11 @@ public static void transform(InputStream xsltInputStream, File xmlFile, File out
Serializer serializer = processor.newSerializer(output);
transformer.setDestination(serializer);
+ for (Map.Entry parameter : parameters.entrySet()) {
+ transformer.setParameter(new QName(parameter.getKey()),
+ new XdmAtomicValue(parameter.getValue()));
+ }
+
// Transform the XML
transformer.transform();
}
@@ -271,11 +303,18 @@ public static void save(CommandLine commandLine, Root root) {
LOGGER.info("Wrote XML to: " + xmlFile.getAbsolutePath());
+ HashMap parameters = new HashMap<>();
+ for (Option o : commandLine.getOptions()) {
+ if (o.getValue() != null) {
+ parameters.put(o.getArgName(), o.getValue());
+ }
+ }
+
if (commandLine.hasOption("rst")) {
File outFile = new File(xmlFile.getParent(), basename + ".rst");
try (InputStream inputStream =
XmlDoclet.class.getResourceAsStream(RESTRUCTURED_XSL);) {
- transform(inputStream, xmlFile, outFile);
+ transform(inputStream, xmlFile, outFile, parameters);
} catch (Exception ex) {
LOGGER.log(Level.SEVERE, "Failed to write Restructured Text", ex);
}
@@ -286,7 +325,7 @@ public static void save(CommandLine commandLine, Root root) {
File outFile = new File(xmlFile.getParent(), basename + ".md");
try (InputStream inputStream =
XmlDoclet.class.getResourceAsStream(MARKDOWN_XSL);) {
- transform(inputStream, xmlFile, outFile);
+ transform(inputStream, xmlFile, outFile, parameters);
} catch (Exception ex) {
LOGGER.log(Level.SEVERE, "Failed to write Markdown", ex);
}
diff --git a/src/main/resources/com/manticore/xsl/restructured.xsl b/src/main/resources/com/manticore/xsl/restructured.xsl
index 6f0c7e3..7919d09 100644
--- a/src/main/resources/com/manticore/xsl/restructured.xsl
+++ b/src/main/resources/com/manticore/xsl/restructured.xsl
@@ -9,14 +9,30 @@
omit-xml-declaration="yes"
indent="no" />
+
+
+
+
+
+
+ ````
+
+
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
-
@@ -32,16 +48,21 @@
-
#######################################################################
-JAVA API
+
#######################################################################
+
+Base Package:
+
+
+
+
@@ -55,12 +76,19 @@ JAVA API
.. _:
***********************************************************************
- Base
-
+
+ Base
+
***********************************************************************
+
+
+
+
+
+
@@ -196,6 +224,46 @@ JAVA API
+
+
+
+
+
+
+
+.. _:
+
+=======================================================================
+
+
+ (
+
+
+
+ :'
+ '
+
+
+ ,
+
+
+ )
+
+=======================================================================
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -225,14 +293,13 @@ JAVA API
-
-----------------------------------------------------------------------
-
+
(