diff options
author | David Chen <dzc@google.com> | 2016-03-01 01:17:26 +0000 |
---|---|---|
committer | Kristina Chodorow <kchodorow@google.com> | 2016-03-01 19:13:28 +0000 |
commit | b0d2046fe1f573e2e6c157bbaaae38f048462880 (patch) | |
tree | 6df3a73ba4bd62a6150059a944c74752be031646 /src/main/java | |
parent | ec1f2b9bfd9aa5c9339f4c35e549f01655454577 (diff) |
Add support for additional edge cases to RuleLinkExpander.
* Add support for rules with capital letters, such as Fileset
* Add support for static page headings with periods.
* Run the expander on the HTML doc for the name attribute.
* Add functions to initial rule index.
--
MOS_MIGRATED_REVID=115925884
Diffstat (limited to 'src/main/java')
3 files changed, 31 insertions, 5 deletions
diff --git a/src/main/java/com/google/devtools/build/docgen/DocgenConsts.java b/src/main/java/com/google/devtools/build/docgen/DocgenConsts.java index d50a29971b..da7a1dacec 100644 --- a/src/main/java/com/google/devtools/build/docgen/DocgenConsts.java +++ b/src/main/java/com/google/devtools/build/docgen/DocgenConsts.java @@ -100,7 +100,7 @@ public class DocgenConsts { * (e.g. common-definitions.label-expansion). */ public static final Pattern BLAZE_RULE_LINK = Pattern.compile( - "\\$\\{link (([a-z_-]+)(\\.([a-z_-]+))?)\\}"); + "\\$\\{link (([a-zA-Z_-]+)(\\.([a-zA-Z_\\.-]+))?)\\}"); /** * i.e. <!-- #BLAZE_RULE(NAME = RULE_NAME, TYPE = RULE_TYPE, FAMILY = RULE_FAMILY) --> diff --git a/src/main/java/com/google/devtools/build/docgen/RuleDocumentation.java b/src/main/java/com/google/devtools/build/docgen/RuleDocumentation.java index 2fec7c495a..f173bdfaa1 100644 --- a/src/main/java/com/google/devtools/build/docgen/RuleDocumentation.java +++ b/src/main/java/com/google/devtools/build/docgen/RuleDocumentation.java @@ -209,10 +209,18 @@ public class RuleDocumentation implements Comparable<RuleDocumentation> { * Returns a string containing any extra documentation for the name attribute for this * rule. */ - public String getNameExtraHtmlDoc() { - return docVariables.containsKey(DocgenConsts.VAR_NAME) + public String getNameExtraHtmlDoc() throws BuildEncyclopediaDocException { + String expandedDoc = docVariables.containsKey(DocgenConsts.VAR_NAME) ? docVariables.get(DocgenConsts.VAR_NAME) : ""; + if (linkExpander != null) { + try { + expandedDoc = linkExpander.expand(expandedDoc); + } catch (IllegalArgumentException e) { + throw new BuildEncyclopediaDocException(fileName, startLineCount, e.getMessage()); + } + } + return expandedDoc; } /** diff --git a/src/main/java/com/google/devtools/build/docgen/RuleLinkExpander.java b/src/main/java/com/google/devtools/build/docgen/RuleLinkExpander.java index 8ac8cbc795..65147d0375 100644 --- a/src/main/java/com/google/devtools/build/docgen/RuleLinkExpander.java +++ b/src/main/java/com/google/devtools/build/docgen/RuleLinkExpander.java @@ -13,8 +13,10 @@ // limitations under the License. package com.google.devtools.build.docgen; +import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; +import java.util.HashMap; import java.util.Map; import java.util.Set; import java.util.regex.Matcher; @@ -28,16 +30,32 @@ import java.util.regex.Matcher; class RuleLinkExpander { private static final String EXAMPLES_SUFFIX = "_examples"; private static final String ARGS_SUFFIX = "_args"; + private static final String FUNCTIONS_PAGE = "functions"; private static final Set<String> STATIC_PAGES = ImmutableSet.<String>of( "common-definitions", "make-variables", "predefined-python-variables"); + private static final Map<String, String> FUNCTIONS = ImmutableMap.<String, String>builder() + .put("load", FUNCTIONS_PAGE) + .put("subinclude", FUNCTIONS_PAGE) + .put("PYTHON-PREPROCESSING-REQUIRED", FUNCTIONS_PAGE) + .put("package", FUNCTIONS_PAGE) + .put("package_group", FUNCTIONS_PAGE) + .put("description", FUNCTIONS_PAGE) + .put("distribs", FUNCTIONS_PAGE) + .put("licenses", FUNCTIONS_PAGE) + .put("exports_files", FUNCTIONS_PAGE) + .put("glob", FUNCTIONS_PAGE) + .put("select", FUNCTIONS_PAGE) + .put("workspace", FUNCTIONS_PAGE) + .build(); - private final Map<String, String> ruleIndex; + private final Map<String, String> ruleIndex = new HashMap<>(); RuleLinkExpander(Map<String, String> ruleIndex) { - this.ruleIndex = ruleIndex; + this.ruleIndex.putAll(ruleIndex); + this.ruleIndex.putAll(FUNCTIONS); } private void appendRuleLink(Matcher matcher, StringBuffer sb, String ruleName, String ref) { |