| // Copyright 2014 The Bazel Authors. All rights reserved. | 
 | // | 
 | // Licensed under the Apache License, Version 2.0 (the "License"); | 
 | // you may not use this file except in compliance with the License. | 
 | // You may obtain a copy of the License at | 
 | // | 
 | //    http://www.apache.org/licenses/LICENSE-2.0 | 
 | // | 
 | // Unless required by applicable law or agreed to in writing, software | 
 | // distributed under the License is distributed on an "AS IS" BASIS, | 
 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
 | // See the License for the specific language governing permissions and | 
 | // limitations under the License. | 
 |  | 
 | package com.google.devtools.build.docgen.starlark; | 
 |  | 
 | import com.google.common.collect.ImmutableList; | 
 | import com.google.devtools.build.docgen.DocgenConsts; | 
 | import net.starlark.java.annot.Param; | 
 |  | 
 | /** A utility class for the documentation generator. */ | 
 | public final class StarlarkDocUtils { | 
 |   private StarlarkDocUtils() {} | 
 |  | 
 |   /** | 
 |    * Substitute special variables in the documentation with their actual values | 
 |    * | 
 |    * @return a string with substituted variables | 
 |    */ | 
 |   public static String substituteVariables(String documentation, String beRoot) { | 
 |     // TODO(b/193923321): Get rid of $STARLARK_DOCS_ROOT and of this entire class, eventually. | 
 |     return documentation | 
 |         .replace("$STARLARK_DOCS_ROOT", DocgenConsts.starlarkDocsRoot) | 
 |         .replace("$BE_ROOT", beRoot); | 
 |   } | 
 |  | 
 |   /** | 
 |    * Returns a list of parameter documentation elements for a given method doc and the method's | 
 |    * parameters. | 
 |    */ | 
 |   static ImmutableList<StarlarkParamDoc> determineParams( | 
 |       StarlarkMethodDoc methodDoc, | 
 |       Param[] userSuppliedParams, | 
 |       Param extraPositionals, | 
 |       Param extraKeywords, | 
 |       StarlarkDocExpander expander) { | 
 |     ImmutableList.Builder<StarlarkParamDoc> paramsBuilder = ImmutableList.builder(); | 
 |     for (Param param : userSuppliedParams) { | 
 |       if (param.documented()) { | 
 |         paramsBuilder.add( | 
 |             new StarlarkParamDoc(methodDoc, param, expander, StarlarkParamDoc.Kind.NORMAL)); | 
 |       } | 
 |     } | 
 |     if (!extraPositionals.name().isEmpty()) { | 
 |       paramsBuilder.add( | 
 |           new StarlarkParamDoc( | 
 |               methodDoc, extraPositionals, expander, StarlarkParamDoc.Kind.EXTRA_POSITIONALS)); | 
 |     } | 
 |     if (!extraKeywords.name().isEmpty()) { | 
 |       paramsBuilder.add( | 
 |           new StarlarkParamDoc( | 
 |               methodDoc, extraKeywords, expander, StarlarkParamDoc.Kind.EXTRA_KEYWORDS)); | 
 |     } | 
 |     return paramsBuilder.build(); | 
 |   } | 
 | } |