JAL-4004 remove stray empty h3 headers
[jalview.git] / build.gradle
index 18af797..958343b 100644 (file)
@@ -2463,6 +2463,7 @@ task hugoTemplates {
   def releaseMdFile = file("${jalviewDir}/${releases_dir}/release-${JALVIEW_VERSION_UNDERSCORES}.md")
   def whatsnewMdFile = file("${jalviewDir}/${whatsnew_dir}/whatsnew-${JALVIEW_VERSION_UNDERSCORES}.md")
   def oldJvlFile = file("${jalviewDir}/${hugo_old_jvl}")
+  def jalviewjsFile = file("${jalviewDir}/${hugo_jalviewjs}")
 
   doFirst {
     // specific release template for version archive
@@ -2486,6 +2487,7 @@ task hugoTemplates {
     }
 
     def oldJvl = oldJvlFile.exists() ? oldJvlFile.collect{it} : []
+    def jalviewjsLink = jalviewjsFile.exists() ? jalviewjsFile.collect{it} : []
 
     def changesHugo = null
     if (changes != null) {
@@ -2549,6 +2551,7 @@ task hugoTemplates {
           CHANGES: changesHugo,
           DATE: givenDate == null ? "" : givenDate.format("yyyy-MM-dd"),
           DRAFT: givenDate == null ? "true" : "false",
+          JALVIEWJSLINK: jalviewjsLink.contains(JALVIEW_VERSION) ? "true" : "false",
           JVL_HEADER: oldJvl.contains(JALVIEW_VERSION) ? "jvl: true" : ""
         ]
       )
@@ -2586,6 +2589,9 @@ def getMdSections(String content) {
       sectionContent += line+"\n"
     }
   }
+  if (sectionContent != null) {
+    sections[sectionName] = sectionContent
+  }
   return sections
 }
 
@@ -2608,34 +2614,66 @@ task releasesTemplates {
     def m = releasesTemplate =~ /(?s)__VERSION_LOOP_START__(.*)__VERSION_LOOP_END__/
     def versionTemplate = m[0][1]
 
-    def versions = ""
-    releaseFiles.each { rFile ->
+    MutableDataSet options = new MutableDataSet()
+
+    def extensions = new ArrayList<>()
+    options.set(Parser.EXTENSIONS, extensions)
+    options.set(Parser.HTML_BLOCK_COMMENT_ONLY_FULL_LINE, true)
+
+    Parser parser = Parser.builder(options).build()
+    HtmlRenderer renderer = HtmlRenderer.builder(options).build()
+
+    def actualVersions = releaseFiles.collect { rf ->
+      def (rfMap, rfContent) = mdFileComponents(rf)
+      return rfMap.version
+    }
+    def versionsHtml = ""
+    def linkedVersions = []
+    releaseFiles.reverse().each { rFile ->
       def (rMap, rContent) = mdFileComponents(rFile)
 
-      def vm = JALVIEW_VERSION =~ /^(.+)\.(\d+)$/
-      def branchVersion = m[0][1]
-      def minorVersion = m[0][2]
+      def versionLink = ""
+      def partialVersion = ""
+      def firstPart = true
+      rMap.version.split("\\.").each { part ->
+        def displayPart = ( firstPart ? "" : "." ) + part
+        partialVersion += displayPart
+        if (
+            linkedVersions.contains(partialVersion)
+            || ( actualVersions.contains(partialVersion) && partialVersion != rMap.version )
+            ) {
+          versionLink += displayPart
+        } else {
+          versionLink += "<a id=\"Jalview.${partialVersion}\">${displayPart}</a>"
+          linkedVersions += partialVersion
+        }
+        firstPart = false
+      }
       def displayDate = releaseFilesDates[rFile].format("d MMMMM yyyy")
 
       def rContentSections = getMdSections(rContent)
-
       def rVersion = versionTemplate
       if (rVersion != "") {
+        Node newFeaturesNode = parser.parse(rContentSections["new_features"])
+        String newFeaturesHtml = renderer.render(newFeaturesNode)
+        Node issuesResolvedNode = parser.parse(rContentSections["issues_resolved"])
+        String issuesResolvedHtml = renderer.render(issuesResolvedNode)
         rVersion = hugoTemplateSubstitutions(rVersion,
           [
-            BRANCH_VERSION: branchVersion,
-            MINOR_VERSION: minorVersion,
+            VERSION: rMap.version,
+            VERSION_LINK: versionLink,
             DISPLAY_DATE: displayDate,
-            NEW_FEATURES: rContentSections["new_features"],
-            KNOWN_ISSUES: rContentSections["known_issues"]
+            NEW_FEATURES: newFeaturesHtml,
+            ISSUES_RESOLVED: issuesResolvedHtml
           ]
         )
+        versionsHtml += rVersion
       }
-
-      println("RVERSION='$rVersion'")
-
-
     }
+
+    releasesTemplate = releasesTemplate.replaceAll("(?s)__VERSION_LOOP_START__.*__VERSION_LOOP_END__", versionsHtml)
+    releasesTemplate = hugoTemplateSubstitutions(releasesTemplate)
+    releasesHtmlFile.text = releasesTemplate
   }
 
   inputs.file(releasesTemplateFile)