Implement replies in post header

This commit is contained in:
Dominic Ferrando
2025-04-19 16:40:43 -04:00
parent 656595e47e
commit 34d3ec5366
5 changed files with 82 additions and 24 deletions
+29 -20
View File
@@ -8,28 +8,37 @@ import (
func EnrichPost(body string) string {
var b strings.Builder
for _, raw := range strings.Split(body, "\n") {
var out string
switch {
case strings.HasPrefix(raw, ">>"):
postId := strings.TrimPrefix(raw, ">>")
esc := template.HTMLEscapeString(raw)
out = fmt.Sprintf(
`<a onclick="onReplyLinkClick(event)"
onmouseover="highlightPost(%[1]s, event)" `+
`onmouseleave="highlightPost(%[1]s, event, false)" `+
`href="#post-%[1]s" class="reply-link">%s</a>`,
postId, esc,
)
case strings.HasPrefix(raw, ">"):
esc := template.HTMLEscapeString(raw)
out = `<span class="greentext">` + esc + `</span>`
default:
out = template.HTMLEscapeString(raw)
for _, rawLine := range strings.Split(body, "\n") {
var outLine string
for i, rawWord := range strings.Split(rawLine, " ") {
var outWord string
if strings.HasPrefix(rawWord, ">>") {
postId := strings.TrimPrefix(rawWord, ">>")
esc := template.HTMLEscapeString(rawWord)
outWord = fmt.Sprintf(
`<a onclick="onReplyLinkClick(event)"
onmouseover="highlightPost(%[1]s, event)" `+
`onmouseleave="highlightPost(%[1]s, event, false)" `+
`href="#post-%[1]s" class="reply-link">%s</a>`,
postId, esc,
)
} else {
outWord = template.HTMLEscapeString(rawWord)
}
if i != 0 {
outLine += " "
}
outLine += outWord
}
b.WriteString(out)
b.WriteString("<br />")
if strings.HasPrefix(rawLine, ">") && !strings.HasPrefix(rawLine, ">>") {
outLine = `<span class="greentext">` + outLine + `</span>`
}
b.WriteString(outLine)
b.WriteString("<br/>")
}
return b.String()
}