aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/docgen
diff options
context:
space:
mode:
authorGravatar cparsons <cparsons@google.com>2018-04-09 15:43:22 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-04-09 15:44:52 -0700
commit979195edc4ad8ea7b6923f99c827a4c1ec102815 (patch)
tree09732695db9c9d5c1b64297de41b7d0ea639e17c /src/main/java/com/google/devtools/build/docgen
parent5c20c949188641db1376dd4b7ed958658ccb3670 (diff)
Introduce extraPositonals and extraArguments to SkylarkCallable, to have parity with @SkylarkSignature.
This is necessary for several builtin functions that still use @SkylarkSignature, such as string format. These will be migrated in a future CL. RELNOTES: None. PiperOrigin-RevId: 192200282
Diffstat (limited to 'src/main/java/com/google/devtools/build/docgen')
-rw-r--r--src/main/java/com/google/devtools/build/docgen/skylark/SkylarkBuiltinMethodDoc.java26
-rw-r--r--src/main/java/com/google/devtools/build/docgen/skylark/SkylarkDocUtils.java24
-rw-r--r--src/main/java/com/google/devtools/build/docgen/skylark/SkylarkJavaMethodDoc.java8
-rw-r--r--src/main/java/com/google/devtools/build/docgen/skylark/SkylarkMethodDoc.java6
4 files changed, 39 insertions, 25 deletions
diff --git a/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkBuiltinMethodDoc.java b/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkBuiltinMethodDoc.java
index bcb52923f9..4a2c5f8bad 100644
--- a/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkBuiltinMethodDoc.java
+++ b/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkBuiltinMethodDoc.java
@@ -13,10 +13,8 @@
// limitations under the License.
package com.google.devtools.build.docgen.skylark;
-import com.google.devtools.build.lib.skylarkinterface.Param;
import com.google.devtools.build.lib.skylarkinterface.SkylarkSignature;
import com.google.devtools.build.lib.syntax.BaseFunction;
-import java.util.ArrayList;
import java.util.List;
/**
@@ -33,8 +31,12 @@ public final class SkylarkBuiltinMethodDoc extends SkylarkMethodDoc {
this.module = module;
this.annotation = annotation;
this.fieldClass = fieldClass;
- this.params = new ArrayList<>();
- processParams();
+ this.params =
+ SkylarkDocUtils.determineParams(
+ this,
+ annotation.parameters(),
+ annotation.extraPositionals(),
+ annotation.extraKeywords());
}
public SkylarkSignature getAnnotation() {
@@ -78,20 +80,4 @@ public final class SkylarkBuiltinMethodDoc extends SkylarkMethodDoc {
public List<SkylarkParamDoc> getParams() {
return params;
}
-
- private void processParams() {
- processParams(adjustedParameters(annotation));
- if (!annotation.extraPositionals().name().isEmpty()) {
- this.params.add(new SkylarkParamDoc(this, annotation.extraPositionals()));
- }
- if (!annotation.extraKeywords().name().isEmpty()) {
- this.params.add(new SkylarkParamDoc(this, annotation.extraKeywords()));
- }
- }
-
- private void processParams(Param[] params) {
- for (Param param : params) {
- this.params.add(new SkylarkParamDoc(this, param));
- }
- }
}
diff --git a/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkDocUtils.java b/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkDocUtils.java
index ac73f65596..18300683af 100644
--- a/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkDocUtils.java
+++ b/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkDocUtils.java
@@ -14,7 +14,9 @@
package com.google.devtools.build.docgen.skylark;
+import com.google.common.collect.ImmutableList;
import com.google.devtools.build.docgen.DocgenConsts;
+import com.google.devtools.build.lib.skylarkinterface.Param;
/** A utility class for the documentation generator. */
public final class SkylarkDocUtils {
@@ -30,4 +32,26 @@ public final class SkylarkDocUtils {
.replace("$BE_ROOT", DocgenConsts.BeDocsRoot)
.replace("$DOC_EXT", DocgenConsts.documentationExtension);
}
+
+ /**
+ * Returns a list of parameter documentation elements for a given method doc and the method's
+ * parameters.
+ */
+ static ImmutableList<SkylarkParamDoc> determineParams(
+ SkylarkMethodDoc methodDoc,
+ Param[] userSuppliedParams,
+ Param extraPositionals,
+ Param extraKeywords) {
+ ImmutableList.Builder<SkylarkParamDoc> paramsBuilder = ImmutableList.builder();
+ for (Param param : userSuppliedParams) {
+ paramsBuilder.add(new SkylarkParamDoc(methodDoc, param));
+ }
+ if (!extraPositionals.name().isEmpty()) {
+ paramsBuilder.add(new SkylarkParamDoc(methodDoc, extraPositionals));
+ }
+ if (!extraKeywords.name().isEmpty()) {
+ paramsBuilder.add(new SkylarkParamDoc(methodDoc, extraKeywords));
+ }
+ return paramsBuilder.build();
+ }
}
diff --git a/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkJavaMethodDoc.java b/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkJavaMethodDoc.java
index fe92bdfe90..60ca32e093 100644
--- a/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkJavaMethodDoc.java
+++ b/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkJavaMethodDoc.java
@@ -42,11 +42,9 @@ public final class SkylarkJavaMethodDoc extends SkylarkMethodDoc {
: callable.name();
this.method = method;
this.callable = callable;
- ImmutableList.Builder<SkylarkParamDoc> paramsBuilder = ImmutableList.builder();
- for (Param param : callable.parameters()) {
- paramsBuilder.add(new SkylarkParamDoc(this, param));
- }
- this.params = paramsBuilder.build();
+ this.params =
+ SkylarkDocUtils.determineParams(
+ this, callable.parameters(), callable.extraPositionals(), callable.extraKeywords());
}
public Method getMethod() {
diff --git a/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkMethodDoc.java b/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkMethodDoc.java
index 116fd4a528..b617803612 100644
--- a/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkMethodDoc.java
+++ b/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkMethodDoc.java
@@ -72,6 +72,12 @@ public abstract class SkylarkMethodDoc extends SkylarkDoc {
}
argList.add(formatParameter(param));
}
+ if (!annotation.extraPositionals().name().isEmpty()) {
+ argList.add("*" + annotation.extraPositionals().name());
+ }
+ if (!annotation.extraKeywords().name().isEmpty()) {
+ argList.add("**" + annotation.extraKeywords().name());
+ }
return Joiner.on(", ").join(argList);
}