aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main
diff options
context:
space:
mode:
authorGravatar David Chen <dzc@google.com>2016-03-01 01:17:26 +0000
committerGravatar Kristina Chodorow <kchodorow@google.com>2016-03-01 19:13:28 +0000
commitb0d2046fe1f573e2e6c157bbaaae38f048462880 (patch)
tree6df3a73ba4bd62a6150059a944c74752be031646 /src/main
parentec1f2b9bfd9aa5c9339f4c35e549f01655454577 (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')
-rw-r--r--src/main/java/com/google/devtools/build/docgen/DocgenConsts.java2
-rw-r--r--src/main/java/com/google/devtools/build/docgen/RuleDocumentation.java12
-rw-r--r--src/main/java/com/google/devtools/build/docgen/RuleLinkExpander.java22
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) {