Implemented image links

This commit is contained in:
2024-04-03 21:13:59 +02:00
parent 463c8b4a85
commit 809b89d689
3 changed files with 62 additions and 31 deletions

View File

@ -279,6 +279,7 @@ func (r *renderer) writeText(markdown string) {
searchStart = 0
linkTextStart = -1
linkTextEnd = -1
linkIsImage = false
emStart = -1
strongStart = -1
strikeStart = -1
@ -286,7 +287,7 @@ func (r *renderer) writeText(markdown string) {
begin:
for {
i := strings.IndexAny(markdown[searchStart:], "[]()`*_~")
i := strings.IndexAny(markdown[searchStart:], "[]()`*_~!")
if i == -1 {
r.WriteString(html.EscapeString(markdown[tokenStart:]))
@ -332,11 +333,19 @@ begin:
linkText := markdown[linkTextStart+1 : linkTextEnd]
linkURL := markdown[i+1 : urlEnd]
r.WriteString("<a href=\"")
r.WriteString(sanitizeURL(linkURL))
r.WriteString("\">")
r.WriteString(html.EscapeString(linkText))
r.WriteString("</a>")
if linkIsImage {
r.WriteString("<img src=\"")
r.WriteString(sanitizeURL(linkURL))
r.WriteString("\" alt=\"")
r.WriteString(html.EscapeString(linkText))
r.WriteString("\">")
} else {
r.WriteString("<a href=\"")
r.WriteString(sanitizeURL(linkURL))
r.WriteString("\">")
r.WriteString(html.EscapeString(linkText))
r.WriteString("</a>")
}
linkTextStart = -1
linkTextEnd = -1
@ -402,6 +411,17 @@ begin:
tokenStart = i
strikeStart = i + 2
}
case '!':
if i+1 >= len(markdown) || markdown[i+1] != '[' {
continue
}
r.WriteString(html.EscapeString(markdown[tokenStart:i]))
tokenStart = i
linkTextStart = i + 1
searchStart++
linkIsImage = true
}
}
}