mirror of
https://github.com/schollz/cowyo.git
synced 2023-08-10 21:13:00 +03:00
fb5ee8d09e
Former-commit-id: d123891bd72ab552a24bbccfd614270de340dac5 [formerly ce7c2d1b9dbdcaf5ef2d665e647833f065c18246] [formerly fc2e4872180a9f264e57e348e2ec4e5896781e74 [formerly 67d5d2f882
]]
Former-commit-id: 1d9e245d81cab6cfe197bc52b516154c7429421b [formerly 1f22520a0e2509d0a509a592d1fed50002eccebc]
Former-commit-id: b60b97411ea8c9b54b26b8058aeda0f1f0466b64
63 lines
2.2 KiB
Go
63 lines
2.2 KiB
Go
package main
|
|
|
|
import (
|
|
"html/template"
|
|
"strconv"
|
|
"strings"
|
|
)
|
|
|
|
func reorderList(text string) ([]template.HTML, []string) {
|
|
listItemsString := ""
|
|
for _, lineString := range strings.Split(text, "\n") {
|
|
if len(lineString) > 1 {
|
|
if string(lineString[0]) != "-" {
|
|
listItemsString += "- " + lineString + "\n"
|
|
} else {
|
|
listItemsString += lineString + "\n"
|
|
}
|
|
}
|
|
}
|
|
|
|
// get ordering of template.HTML for rendering
|
|
renderedListString := MarkdownToHtml(listItemsString)
|
|
listItems := []template.HTML{}
|
|
endItems := []template.HTML{}
|
|
for _, lineString := range strings.Split(renderedListString, "\n") {
|
|
if len(lineString) > 1 {
|
|
if strings.Contains(lineString, "<del>") || strings.Contains(lineString, "</ul>") {
|
|
endItems = append(endItems, template.HTML(lineString))
|
|
} else {
|
|
listItems = append(listItems, template.HTML(lineString))
|
|
}
|
|
}
|
|
}
|
|
|
|
// get ordering of strings for deleting
|
|
listItemsStringArray := []string{}
|
|
endItemsStringArray := []string{}
|
|
for _, lineString := range strings.Split(listItemsString, "\n") {
|
|
if len(lineString) > 1 {
|
|
if strings.Contains(lineString, "~~") {
|
|
endItemsStringArray = append(endItemsStringArray, lineString)
|
|
} else {
|
|
listItemsStringArray = append(listItemsStringArray, lineString)
|
|
}
|
|
}
|
|
}
|
|
return append(listItems, endItems...), append(listItemsStringArray, endItemsStringArray...)
|
|
}
|
|
|
|
func renderList(currentRawText string) []template.HTML {
|
|
listItems, _ := reorderList(currentRawText)
|
|
for i := range listItems {
|
|
newHTML := strings.Replace(string(listItems[i]), "</a>", "</a>"+`<span id="`+strconv.Itoa(i)+`" class="deletable">`, -1)
|
|
newHTML = strings.Replace(newHTML, "<a href=", "</span><a href=", -1)
|
|
newHTML = strings.Replace(newHTML, "<li>", "<li>"+`<span id="`+strconv.Itoa(i)+`" class="deletable">`, -1)
|
|
newHTML = strings.Replace(newHTML, "</li>", "</span></li>", -1)
|
|
newHTML = strings.Replace(newHTML, "<li>"+`<span id="`+strconv.Itoa(i)+`" class="deletable"><del>`, "<li><del>"+`<span id="`+strconv.Itoa(i)+`" class="deletable">`, -1)
|
|
newHTML = strings.Replace(newHTML, "</del></span></li>", "</span></del></li>", -1)
|
|
listItems[i] = template.HTML([]byte(newHTML))
|
|
}
|
|
return listItems
|
|
}
|