Disabled formatting in URLs
This commit is contained in:
53
Render.go
53
Render.go
@ -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 '`':
|
||||
|
Reference in New Issue
Block a user