def ulToList(Element ul, int indent) {
def list = ""
ul.children().each { e ->
if (e.tagName().toLowerCase() == "ul") {
list = list.stripTrailing() + "\n"
list += ulToList(e, indent+1)
} else if (e.tagName().toLowerCase() == "li") {
def issues = []
def issuesText = ""
def mdItem = " " * indent + "- "
e.childNodes().any {n ->
if (n.nodeName().equals("#comment")) {
mdItem += "{{
\n"
} else if (node.nodeName().toLowerCase() == "a") {
mdItem += "[${node.text()}](${node.attr('href')})"
}
}
if (!addedIssues) {
mdItem += issuesLink
}
list += mdItem.stripTrailing()+"\n"
} else if (e.tagName().toLowerCase() == "div") {
e.children().each { eee ->
list += ulToList(eee, indent)
}
} else if (e.tagName().toLowerCase() == "strong") {
list += "**${e.text()}**"
} else if (e.tagName().toLowerCase() == "em") {
if (e.text().length() > 50 && e.text().count(" ") > 20) {
list += "*${e.text()}*"
} else {
list += "\n\n### ${e.text()}\n\n"
}
}
}
return list
}
task hugoTemplates {
group "website"
description "Create partially populated md pages for hugo website build"
def hugoTemplatesDir = file("${jalviewDir}/${hugo_templates_dir}")
def hugoBuildDir = "${jalviewDir}/${hugo_build_dir}"
def templateFiles = fileTree(dir: hugoTemplatesDir)
doFirst {
// specific release template for version archive
def summary = "${applicationName} ${JALVIEW_VERSION}"
def changes = ""
def oldDate = null
if (CHANNEL == "RELEASE") {
def releasesHtmlFile = file("${helpSourceDir}/${releases_html}")
//HTMLPARSE
def html = releasesHtmlFile.text
def doc = Jsoup.parse(html)
def table = doc.select("table").first()
def headings = table.select("tr").first().select("th").collect { it.text() }
def releaseRow = null
def trs = table.select("tr")
trs.any { tr ->
def tds = tr.select("td")
if (tds.size() == 0)
return false
def releaseTd = tds.first()
if (releaseTd.text().startsWith("${JALVIEW_VERSION} ")) {
releaseRow = tr
return true
}
}
if (releaseRow != null && headings != null && headings.size() == 3) {
def releaseTd = releaseRow.select("td").first()
def spaceIndex = releaseTd.text().indexOf(" ")
if (spaceIndex >= 0) {
oldDate = new Date().parse("dd/MM/yyyy", releaseTd.text().substring(spaceIndex+1))
}
def releaseCells = releaseRow.select("td")
if (releaseCells.size() == 3) {
def title1 = headings[1]
def title2 = headings[2]
def lastDotIndex = JALVIEW_VERSION.lastIndexOf(".")
if (lastDotIndex > 0) {
try {
def patchRelease = JALVIEW_VERSION.substring(lastDotIndex+1) as Integer
def patchReleaseString = null
if (patchRelease == 0) {
patchReleaseString = "first minor"
} else if (patchRelease == 1) {
patchReleaseString = "first patch"
} else if (patchRelease == 2) {
patchReleaseString = "second patch"
} else if (patchRelease == 3) {
patchReleaseString = "third patch"
} else if (patchRelease == 4) {
patchReleaseString = "fourth patch"
} else if (patchRelease == 5) {
patchReleaseString = "fifth patch"
} else if (patchRelease == 6) {
patchReleaseString = "sixth patch"
} else if (patchRelease == 7) {
patchReleaseString = "seventh patch"
} else if (patchRelease > 13 && (patchRelease % 10 == 1)) {
patchReleaseString += "st"
} else if (patchRelease > 13 && (patchRelease % 10 == 2)) {
patchReleaseString += "nd"
} else if (patchRelease > 13 && (patchRelease % 10 == 3)) {
patchReleaseString += "rd"
} else if (patchRelease != null) {
patchReleaseString += "th"
}
summary += (patchReleaseString != null) ? " is the ${patchReleaseString} release in the ${JALVIEW_VERSION.substring(0,lastDotIndex)} series." : ""
} catch(Exception e) {
summary = ""
}
}
[1,2].each { col ->
def colChanges = ""
if (headings[col] != null && headings[col].size() > 0) {
releaseCells[col].children().each { e ->
if (e.tagName().toLowerCase() == "ul" || e.tagName().toLowerCase() == "div") {
if (colChanges != "") {
colChanges = colChanges.stripTrailing() + "\n"
}
colChanges += ulToList(e, 0)
} else if (e.tagName().toLowerCase() == "em") {
colChanges += "\n\n### ${e.text()}\n\n"
}
}
}
if (colChanges != "") {
def className = headings[col].replaceAll(" ","_").toLowerCase().replaceAll("[^_a-z]","")
changes += "