+def ulToList(Element ul, int indent) {
+ def list = ""
+ ul.children().each { e ->
+ if (e.tagName().toLowerCase() == "ul") {
+ list += "\n"
+ list += ulToList(e, indent+1)
+ } else if (e.tagName().toLowerCase() == "li") {
+ def issues = []
+ def mdItem = " " * indent + "- "
+ e.childNodes().any {n ->
+ if (n.nodeName().equals("#comment")) {
+ mdItem += "${n} "
+ issues = n.getData().trim().split(/[,\s]+/)
+ return true
+ }
+ }
+ def issuesLink = (issues.size() > 0) ?
+ " {{< jal issue=\"${issues.join(",")}\" >}}"
+ : ""
+ def addedIssues = false
+ e.childNodes().each { node ->
+ if (node.nodeName().toLowerCase() == "ul") {
+ // add issues link before sub list
+ mdItem += "${issuesLink}\n"
+ addedIssues = true
+ mdItem += ulToList(e, indent+1)
+ } else if (node.nodeName() == "#text") {
+ mdItem += node.text()
+ }
+ }
+ if (!addedIssues) {
+ mdItem += issuesLink
+ }
+ list += "${mdItem}\n"
+ }
+ }
+ return list
+}
+