Disabled formatting in URLs

This commit is contained in:
2024-04-02 21:30:50 +02:00
parent 891e3938fa
commit 9e6767fb12
3 changed files with 38 additions and 22 deletions

View File

@ -253,14 +253,13 @@ func (r *renderer) writeText(markdown string) {
searchStart = 0
linkTextStart = -1
linkTextEnd = -1
urlStart = -1
codeStart = -1
emStart = -1
strongStart = -1
strikeStart = -1
parentheses = 0
)
begin:
for {
i := strings.IndexAny(markdown[searchStart:], "[]()`*_~")
@ -282,30 +281,46 @@ func (r *renderer) writeText(markdown string) {
linkTextEnd = i
case '(':
if parentheses == 0 {
urlStart = i
if linkTextStart == -1 || linkTextEnd == -1 {
continue
}
parentheses++
level := 1
case ')':
parentheses--
for {
pos := strings.IndexAny(markdown[searchStart:], "()")
if parentheses == 0 && linkTextStart >= 0 && linkTextEnd >= 0 && urlStart >= 0 {
linkText := markdown[linkTextStart+1 : linkTextEnd]
linkURL := markdown[urlStart+1 : i]
if pos == -1 {
goto begin
}
r.WriteString("<a href=\"")
r.WriteString(sanitizeURL(linkURL))
r.WriteString("\">")
r.WriteString(html.EscapeString(linkText))
r.WriteString("</a>")
switch markdown[searchStart+pos] {
case '(':
level++
case ')':
level--
linkTextStart = -1
linkTextEnd = -1
urlStart = -1
if level == 0 {
urlEnd := searchStart + pos
searchStart = urlEnd + 1
tokenStart = i + 1
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>")
linkTextStart = -1
linkTextEnd = -1
tokenStart = urlEnd + 1
goto begin
}
}
searchStart += pos + 1
}
case '`':