Implemented text formatting

This commit is contained in:
2024-04-02 19:48:35 +02:00
parent a06f513d65
commit 52c995659d
3 changed files with 57 additions and 14 deletions

View File

@ -122,18 +122,20 @@ func (r *renderer) processLine(line string) {
return
}
line = strings.TrimSpace(line[1:])
if len(line) > 1 && line[1] == ' ' {
line = line[2:]
if r.listLevel == 0 {
r.WriteString("<ul>")
r.listLevel++
if r.listLevel == 0 {
r.WriteString("<ul>")
r.listLevel++
}
r.WriteString("<li>")
r.writeText(line)
r.WriteString("</li>")
return
}
r.WriteString("<li>")
r.writeText(line)
r.WriteString("</li>")
return
case '`':
if strings.HasPrefix(line, "```") {
language := line[3:]
@ -255,12 +257,14 @@ func (r *renderer) writeText(markdown string) {
textStart = -1
textEnd = -1
urlStart = -1
parentheses = 0
codeStart = -1
emStart = -1
strongStart = -1
parentheses = 0
)
for {
if i == len(markdown) {
if i >= len(markdown) {
r.WriteString(html.EscapeString(markdown[tokenStart:]))
return
}
@ -315,6 +319,30 @@ func (r *renderer) writeText(markdown string) {
tokenStart = i
codeStart = i + 1
}
case '*', '_':
if i == emStart {
strongStart = i + 1
emStart = -1
} else if strongStart != -1 {
r.WriteString("<strong>")
r.WriteString(html.EscapeString(markdown[strongStart:i]))
r.WriteString("</strong>")
strongStart = -1
i++
tokenStart = i + 1
} else if emStart != -1 {
r.WriteString("<em>")
r.WriteString(html.EscapeString(markdown[emStart:i]))
r.WriteString("</em>")
emStart = -1
tokenStart = i + 1
} else {
r.WriteString(html.EscapeString(markdown[tokenStart:i]))
tokenStart = i
emStart = i + 1
}
}
i++