You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2020/12/10 10:46:27 UTC
[isis] 01/02: ISIS-2473: support rendering of generic methods
This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git
commit baae4ddaecdce81c9f08702f4aafbaa5b366e4ee
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Dec 10 10:09:01 2020 +0100
ISIS-2473: support rendering of generic methods
---
.../isis/tooling/cli/doclet/AdocletContext.java | 23 +++++++++++++++++-----
.../apache/isis/tooling/cli/doclet/ToAsciiDoc.java | 22 +++++++++++++++++++--
2 files changed, 38 insertions(+), 7 deletions(-)
diff --git a/tooling/cli/src/main/java/org/apache/isis/tooling/cli/doclet/AdocletContext.java b/tooling/cli/src/main/java/org/apache/isis/tooling/cli/doclet/AdocletContext.java
index 394f1ab..684ca93 100644
--- a/tooling/cli/src/main/java/org/apache/isis/tooling/cli/doclet/AdocletContext.java
+++ b/tooling/cli/src/main/java/org/apache/isis/tooling/cli/doclet/AdocletContext.java
@@ -38,14 +38,23 @@ public class AdocletContext {
private final @NonNull String xrefPageIdFormat;
+ /**
+ * method-generic-type | return-type | name | param-list
+ */
@Builder.Default
- private final @NonNull String methodFormat = "`%s %s(%s)`"; // return-type | name | param-list
+ private final @NonNull String methodFormat = "`%s %s %s(%s)`";
+ /**
+ * method-generic-type | return-type | name | param-list
+ */
@Builder.Default
- private final @NonNull String staticMethodFormat = "`%s _%s_(%s)`"; // return-type | name | param-list
+ private final @NonNull String staticMethodFormat = "`%s %s _%s_(%s)`";
+ /**
+ * method | description
+ */
@Builder.Default
- private final @NonNull String methodDescriptionFormat = "\n<.> %s %s\n"; // method | description
+ private final @NonNull String methodDescriptionFormat = "\n<.> %s %s\n";
@Builder.Default
private final boolean includeJavaSource = true;
@@ -79,10 +88,14 @@ public class AdocletContext {
return Optional.ofNullable(adocletIndex.get(key));
}
+ public static AdocletContextBuilder javaSourceWithFootNotesFormat() {
+ return AdocletContext.builder();
+ }
+
public static AdocletContextBuilder compactFormat() {
return AdocletContext.builder()
- .methodFormat("`*%2$s*(%3$s)` : `%1$s`") // return-type | name | param-list)
- .staticMethodFormat("`*_%2$s_*(%3$s)` : `%1$s`") // return-type | name | param-list)
+ .methodFormat("`*%3$s*%1$s(%4$s)` : `%2$s`") // method-generic-type | return-type | name | param-list)
+ .staticMethodFormat("`*_%3$s_*%1$s(%4$s)` : `%2$s`") // method-generic-type | return-type | name | param-list)
.methodDescriptionFormat("\n* %s\n%s\n") // method | description
.includeJavaSource(false)
;
diff --git a/tooling/cli/src/main/java/org/apache/isis/tooling/cli/doclet/ToAsciiDoc.java b/tooling/cli/src/main/java/org/apache/isis/tooling/cli/doclet/ToAsciiDoc.java
index 672f71c..237e909 100644
--- a/tooling/cli/src/main/java/org/apache/isis/tooling/cli/doclet/ToAsciiDoc.java
+++ b/tooling/cli/src/main/java/org/apache/isis/tooling/cli/doclet/ToAsciiDoc.java
@@ -20,10 +20,15 @@ package org.apache.isis.tooling.cli.doclet;
import java.util.stream.Collectors;
+import javax.annotation.Nullable;
+
+import com.github.javaparser.ast.NodeList;
import com.github.javaparser.ast.body.MethodDeclaration;
import com.github.javaparser.ast.body.Parameter;
+import com.github.javaparser.ast.expr.SimpleName;
import com.github.javaparser.ast.type.ClassOrInterfaceType;
import com.github.javaparser.ast.type.Type;
+import com.github.javaparser.ast.type.TypeParameter;
import com.github.javaparser.javadoc.Javadoc;
import com.github.javaparser.javadoc.description.JavadocInlineTag;
import com.github.javaparser.javadoc.description.JavadocSnippet;
@@ -45,12 +50,25 @@ class ToAsciiDoc {
? docletContext.getStaticMethodFormat()
: docletContext.getMethodFormat();
- return String.format(methodFormat,
+ return String.format(methodFormat,
+ typeParamters(md.getTypeParameters()),
type(md.getType()),
md.getNameAsString(),
md.getParameters()
+ .stream()
+ .map(this::parameterDeclaration)
+ .collect(Collectors.joining(", ")));
+ }
+
+ public String typeParamters(final @Nullable NodeList<TypeParameter> typeParamters) {
+ if(typeParamters == null
+ || typeParamters.isEmpty()) {
+ return "";
+ }
+ return String.format("<%s>", typeParamters
.stream()
- .map(this::parameterDeclaration)
+ .map(TypeParameter::getName)
+ .map(SimpleName::asString)
.collect(Collectors.joining(", ")));
}