Improve readability of Build Encyclopedia summary table on bazel.io.

Add Bootstrap styles to all tables on Test Encyclopedia for bazel.io.

--
MOS_MIGRATED_REVID=96388455
diff --git a/src/main/java/com/google/devtools/build/docgen/BuildEncyclopediaProcessor.java b/src/main/java/com/google/devtools/build/docgen/BuildEncyclopediaProcessor.java
index 009e78c..4100b1d 100644
--- a/src/main/java/com/google/devtools/build/docgen/BuildEncyclopediaProcessor.java
+++ b/src/main/java/com/google/devtools/build/docgen/BuildEncyclopediaProcessor.java
@@ -17,6 +17,7 @@
 import com.google.common.base.Preconditions;
 import com.google.common.base.Predicate;
 import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ImmutableMap.Builder;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.LinkedListMultimap;
@@ -231,13 +232,6 @@
 
   private Map<String, String> generateBEHeaderMapping(Iterable<RuleDocumentation> docEntries)
       throws BuildEncyclopediaDocException {
-    StringBuilder sb = new StringBuilder();
-
-    sb.append("<table id=\"rules\" summary=\"Table of rules sorted by language\">\n")
-      .append("<colgroup span=\"5\" width=\"20%\"></colgroup>\n")
-      .append("<tr><th>Language</th><th>Binary rules</th><th>Library rules</th>"
-        + "<th>Test rules</th><th>Other rules</th><th></th></tr>\n");
-
     // Separate rule families into language-specific and generic ones.
     Set<String> languageSpecificRuleFamilies = new TreeSet<>();
     Set<String> genericRuleFamilies = new TreeSet<>();
@@ -247,26 +241,43 @@
     Map<String, ListMultimap<RuleType, RuleDocumentation>> ruleMapping = new HashMap<>();
     createRuleMapping(docEntries, ruleMapping);
 
-    // Generate the table.
-    for (String ruleFamily : languageSpecificRuleFamilies) {
-      generateHeaderTableRuleFamily(sb, ruleMapping.get(ruleFamily), ruleFamily);
+    String languageSpecificTable;
+    {
+      StringBuilder sb = new StringBuilder();
+
+      sb.append("<colgroup span=\"6\" width=\"20%\"></colgroup>\n")
+        .append("<tr><th>Language</th><th>Binary rules</th><th>Library rules</th>"
+          + "<th>Test rules</th><th>Other rules</th><th></th></tr>\n");
+
+      // Generate the table.
+      for (String ruleFamily : languageSpecificRuleFamilies) {
+        generateHeaderTableRuleFamily(sb, ruleMapping.get(ruleFamily), ruleFamily);
+      }
+      languageSpecificTable = sb.toString();
     }
 
-    sb.append("<tr><th>&nbsp;</th></tr>");
-    sb.append("<tr><th colspan=\"5\">Rules that do not apply to a "
-            + "specific programming language</th></tr>");
-    for (String ruleFamily : genericRuleFamilies) {
-      generateHeaderTableRuleFamily(sb, ruleMapping.get(ruleFamily), ruleFamily);
+    String otherRulesTable;
+    {
+      StringBuilder sb = new StringBuilder();
+
+      sb.append("<colgroup span=\"6\" width=\"20%\"></colgroup>\n");
+      for (String ruleFamily : genericRuleFamilies) {
+        generateHeaderTableRuleFamily(sb, ruleMapping.get(ruleFamily), ruleFamily);
+      }
+      otherRulesTable = sb.toString();
     }
-    sb.append("</table>\n");
-    return ImmutableMap.<String, String>of(DocgenConsts.VAR_HEADER_TABLE, sb.toString(),
-        DocgenConsts.VAR_COMMON_ATTRIBUTE_DEFINITION, generateCommonAttributeDocs(
-            PredefinedAttributes.COMMON_ATTRIBUTES, DocgenConsts.COMMON_ATTRIBUTES),
-        DocgenConsts.VAR_TEST_ATTRIBUTE_DEFINITION, generateCommonAttributeDocs(
-            PredefinedAttributes.TEST_ATTRIBUTES, DocgenConsts.TEST_ATTRIBUTES),
-        DocgenConsts.VAR_BINARY_ATTRIBUTE_DEFINITION, generateCommonAttributeDocs(
-            PredefinedAttributes.BINARY_ATTRIBUTES, DocgenConsts.BINARY_ATTRIBUTES),
-        DocgenConsts.VAR_LEFT_PANEL, generateLeftNavigationPanel(docEntries));
+
+    return new ImmutableMap.Builder<String, String>()
+        .put(DocgenConsts.VAR_LANG_SPECIFIC_HEADER_TABLE, languageSpecificTable)
+        .put(DocgenConsts.VAR_OTHER_RULES_HEADER_TABLE, otherRulesTable)
+        .put(DocgenConsts.VAR_COMMON_ATTRIBUTE_DEFINITION, generateCommonAttributeDocs(
+            PredefinedAttributes.COMMON_ATTRIBUTES, DocgenConsts.COMMON_ATTRIBUTES))
+        .put(DocgenConsts.VAR_TEST_ATTRIBUTE_DEFINITION, generateCommonAttributeDocs(
+            PredefinedAttributes.TEST_ATTRIBUTES, DocgenConsts.TEST_ATTRIBUTES))
+        .put(DocgenConsts.VAR_BINARY_ATTRIBUTE_DEFINITION, generateCommonAttributeDocs(
+            PredefinedAttributes.BINARY_ATTRIBUTES, DocgenConsts.BINARY_ATTRIBUTES))
+        .put(DocgenConsts.VAR_LEFT_PANEL, generateLeftNavigationPanel(docEntries))
+        .build();
   }
 
   /**
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 01bf7d6..31f3359 100644
--- a/src/main/java/com/google/devtools/build/docgen/DocgenConsts.java
+++ b/src/main/java/com/google/devtools/build/docgen/DocgenConsts.java
@@ -45,7 +45,8 @@
   public static final String VAR_ATTRIBUTE_SIGNATURE = "ATTRIBUTE_SIGNATURE";
   public static final String VAR_ATTRIBUTE_DEFINITION = "ATTRIBUTE_DEFINITION";
   public static final String VAR_NAME = "NAME";
-  public static final String VAR_HEADER_TABLE = "HEADER_TABLE";
+  public static final String VAR_LANG_SPECIFIC_HEADER_TABLE = "LANG_SPECIFIC_HEADER_TABLE";
+  public static final String VAR_OTHER_RULES_HEADER_TABLE = "OTHER_RULES_HEADER_TABLE";
   public static final String VAR_COMMON_ATTRIBUTE_DEFINITION = "COMMON_ATTRIBUTE_DEFINITION";
   public static final String VAR_TEST_ATTRIBUTE_DEFINITION = "TEST_ATTRIBUTE_DEFINITION";
   public static final String VAR_BINARY_ATTRIBUTE_DEFINITION = "BINARY_ATTRIBUTE_DEFINITION";
diff --git a/src/main/java/com/google/devtools/build/docgen/templates/be-header.html b/src/main/java/com/google/devtools/build/docgen/templates/be-header.html
index 1a9593c..8e841a6 100644
--- a/src/main/java/com/google/devtools/build/docgen/templates/be-header.html
+++ b/src/main/java/com/google/devtools/build/docgen/templates/be-header.html
@@ -60,8 +60,20 @@
 
   <h3>Rules</h3>
 
-${HEADER_TABLE}
+<h4>Language-specific Rules</h4>
 
+<table class="table table-condensed table-striped"
+    summary="Table of rules sorted by language">
+${LANG_SPECIFIC_HEADER_TABLE}
+
+</table>
+<h4>Rules that do not apply to a specific programming language</h4>
+
+<table class="table table-condensed table-striped"
+    summary="Table of rules not specific to a programming language">
+${OTHER_RULES_HEADER_TABLE}
+
+</table>
 <h2 id="common-definitions">Common definitions</h2>
 
 <p>This section defines various terms and concepts that are common to