private void processFunctionDocArguments()

in tools/docgen/src/main/java/com/google/cloud/verticals/foundations/dataharmonization/doclet/FunctionScanner.java [201:245]


  private void processFunctionDocArguments(
      DocCommentTree docTree, FunctionDoc.Builder functionBuilder, ExecutableElement e) {
    Map<String, String> argNameToDoc =
        docTree.getBlockTags().stream()
            .filter(ParamTree.class::isInstance)
            .map(ParamTree.class::cast)
            .collect(
                Collectors.toMap(
                    pt -> docToString(ImmutableList.of(pt.getName())),
                    pt -> docToString(pt.getDescription())));

    List<? extends VariableElement> parameters = e.getParameters();
    for (int i = 0; i < parameters.size(); i++) {
      VariableElement parameter = parameters.get(i);
      String name = parameter.getSimpleName().toString();
      Element elem = types.asElement(parameter.asType());
      if (parameter.asType().getKind() == TypeKind.ARRAY) {
        elem = types.asElement(((ArrayType) parameter.asType()).getComponentType());
      }

      String type;
      if (elem == null) {
        logger.atSevere().log("No type for %s of %s", parameter, e);
        type = "???";
      } else {
        type = elem.getSimpleName().toString();
      }

      if (type.equals("RuntimeContext")) {
        continue;
      }

      if (i == parameters.size() - 1 && e.isVarArgs()) {
        type += "...";
      }

      ArgumentDoc arg =
          ArgumentDoc.builder()
              .setName(name)
              .setType(type)
              .setBody(argNameToDoc.getOrDefault(name, ""))
              .build();
      functionBuilder.addArgument(arg);
    }
  }