Fixed SkylarkDoc.getDocumentation to append a period to the doc string if it is missing.

Fixes #1522.

--
Change-Id: Ib94c1544cb0862f40beeeadb60780da1a47dfc66
Reviewed-on: https://bazel-review.googlesource.com/#/c/4042
MOS_MIGRATED_REVID=128807763
diff --git a/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkBuiltinMethodDoc.java b/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkBuiltinMethodDoc.java
index eaa1828..ed8492f 100644
--- a/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkBuiltinMethodDoc.java
+++ b/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkBuiltinMethodDoc.java
@@ -16,7 +16,6 @@
 import com.google.devtools.build.lib.skylarkinterface.Param;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkSignature;
 import com.google.devtools.build.lib.syntax.BaseFunction;
-
 import java.util.ArrayList;
 import java.util.List;
 
@@ -53,7 +52,7 @@
   }
 
   @Override
-  public String getDocumentation() {
+  protected String getEntityDocumentation() {
     return annotation.doc();
   }
 
diff --git a/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkDoc.java b/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkDoc.java
index 01f84e7..e8b7d32 100644
--- a/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkDoc.java
+++ b/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkDoc.java
@@ -22,9 +22,9 @@
 import com.google.devtools.build.lib.syntax.SkylarkList;
 import com.google.devtools.build.lib.syntax.SkylarkList.MutableList;
 import com.google.devtools.build.lib.syntax.SkylarkList.Tuple;
-
 import java.util.Arrays;
 import java.util.Map;
+import java.util.regex.Pattern;
 
 /**
  * Abstract class for containing documentation for a Skylark syntactic entity.
@@ -38,10 +38,26 @@
   public abstract String getName();
 
   /**
-   * Returns a string containing the HTML documentation of the entity being
-   * documented.
+   * Returns a string containing the formatted HTML documentation of the entity being documented.
    */
-  public abstract String getDocumentation();
+  public String getDocumentation() {
+    String doc = getEntityDocumentation();
+    if (doc == null || doc.length() == 0) {
+      return "";
+    }
+
+    // Check if valid punctiation is not present at the end of the documentation.
+    if (!Pattern.matches("[.?!]$", doc)) {
+      // Add a final period.
+      doc += ".";
+    }
+    return doc;
+  }
+
+  /**
+   * Returns a string containing the HTML documentation of the entity, before being post-processed.
+   */
+  protected abstract String getEntityDocumentation();
 
   protected String getTypeAnchor(Class<?> returnType, Class<?> generic1) {
     return getTypeAnchor(returnType) + " of " + getTypeAnchor(generic1) + "s";
diff --git a/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkJavaMethodDoc.java b/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkJavaMethodDoc.java
index 3ee3aab..66b5f97 100644
--- a/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkJavaMethodDoc.java
+++ b/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkJavaMethodDoc.java
@@ -15,7 +15,6 @@
 
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.util.StringUtilities;
-
 import java.lang.reflect.Method;
 
 /**
@@ -52,7 +51,7 @@
   }
 
   @Override
-  public String getDocumentation() {
+  protected String getEntityDocumentation() {
     return callable.doc();
   }
 
diff --git a/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkModuleDoc.java b/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkModuleDoc.java
index 288eb40..288873f 100644
--- a/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkModuleDoc.java
+++ b/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkModuleDoc.java
@@ -17,7 +17,6 @@
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkSignature;
-
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
@@ -56,7 +55,7 @@
   }
 
   @Override
-  public String getDocumentation() {
+  protected String getEntityDocumentation() {
     return module.doc();
   }
 
diff --git a/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkParamDoc.java b/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkParamDoc.java
index 849c276..69bb833 100644
--- a/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkParamDoc.java
+++ b/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkParamDoc.java
@@ -68,7 +68,8 @@
     return param.name();
   }
 
-  @Override public String getDocumentation() {
+  @Override
+  protected String getEntityDocumentation() {
     return param.doc();
   }
 }