nip23: the renderer is not goroutine-safe so it can't be reused.
This commit is contained in:
@@ -15,23 +15,23 @@ import (
|
|||||||
|
|
||||||
var nostrEveryMatcher = regexp.MustCompile(`nostr:((npub|note|nevent|nprofile|naddr)1[a-z0-9]+)\b`)
|
var nostrEveryMatcher = regexp.MustCompile(`nostr:((npub|note|nevent|nprofile|naddr)1[a-z0-9]+)\b`)
|
||||||
|
|
||||||
var renderer = html.NewRenderer(html.RendererOptions{
|
|
||||||
Flags: html.HrefTargetBlank | html.SkipHTML,
|
|
||||||
RenderNodeHook: func(w io.Writer, node ast.Node, entering bool) (ast.WalkStatus, bool) {
|
|
||||||
switch v := node.(type) {
|
|
||||||
case *ast.HTMLSpan:
|
|
||||||
w.Write([]byte(stdhtml.EscapeString(string(v.Literal))))
|
|
||||||
return ast.GoToNext, true
|
|
||||||
case *ast.HTMLBlock:
|
|
||||||
w.Write([]byte(stdhtml.EscapeString(string(v.Literal))))
|
|
||||||
return ast.GoToNext, true
|
|
||||||
}
|
|
||||||
|
|
||||||
return ast.GoToNext, false
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
func MarkdownToHTML(md string) string {
|
func MarkdownToHTML(md string) string {
|
||||||
|
renderer := html.NewRenderer(html.RendererOptions{
|
||||||
|
Flags: html.HrefTargetBlank | html.SkipHTML,
|
||||||
|
RenderNodeHook: func(w io.Writer, node ast.Node, entering bool) (ast.WalkStatus, bool) {
|
||||||
|
switch v := node.(type) {
|
||||||
|
case *ast.HTMLSpan:
|
||||||
|
w.Write([]byte(stdhtml.EscapeString(string(v.Literal))))
|
||||||
|
return ast.GoToNext, true
|
||||||
|
case *ast.HTMLBlock:
|
||||||
|
w.Write([]byte(stdhtml.EscapeString(string(v.Literal))))
|
||||||
|
return ast.GoToNext, true
|
||||||
|
}
|
||||||
|
|
||||||
|
return ast.GoToNext, false
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
md = strings.ReplaceAll(md, "\u00A0", " ")
|
md = strings.ReplaceAll(md, "\u00A0", " ")
|
||||||
|
|
||||||
// create markdown parser with extensions
|
// create markdown parser with extensions
|
||||||
|
|||||||
Reference in New Issue
Block a user