From aea07c141b3a2448ea367ad80ad5e12d04a78df7 Mon Sep 17 00:00:00 2001 From: Anhgelus Morhtuuzh Date: Sat, 13 Dec 2025 18:09:40 +0100 Subject: refactor(markdown): use new dom package to create html --- markdown/ast_external.go | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) (limited to 'markdown/ast_external.go') diff --git a/markdown/ast_external.go b/markdown/ast_external.go index 8adeea1..4a1024a 100644 --- a/markdown/ast_external.go +++ b/markdown/ast_external.go @@ -1,9 +1,10 @@ package markdown import ( - "fmt" "html/template" "regexp" + + "git.anhgelus.world/anhgelus/small-web/dom" ) var ExternalLink = regexp.MustCompile(`https?://`) @@ -31,10 +32,12 @@ func (a *astLink) Eval(opt *Option) (template.HTML, *ParseError) { } func RenderLink(content, href string) template.HTML { - if !ExternalLink.Match([]byte(href)) { - return template.HTML(fmt.Sprintf(`%s`, href, content)) + anchor := dom.NewLiteralContentElement("a", template.HTML(content)) + anchor.SetAttribute("href", href) + if ExternalLink.MatchString(href) { + anchor.SetAttribute("target", "_blank").SetAttribute("rel", "noreferer") } - return template.HTML(fmt.Sprintf(`%s`, href, content)) + return anchor.Render() } type astImage struct { @@ -53,8 +56,10 @@ func (a *astImage) Eval(opt *Option) (template.HTML, *ParseError) { return "", err } src = template.HTML(opt.ImageSource(string(src))) + img := dom.NewImg(string(src), string(alt)) + figure := dom.NewContentElement("figure", []dom.Element{img}) if a.source == nil { - return template.HTML(fmt.Sprintf(`
%s
`, alt, src)), nil + return figure.Render(), nil } var s template.HTML for _, c := range a.source { @@ -65,7 +70,9 @@ func (a *astImage) Eval(opt *Option) (template.HTML, *ParseError) { s += ct + " " } s = s[:len(s)-1] - return template.HTML(fmt.Sprintf(`
%s
%s
`, alt, src, s)), nil + figcaption := dom.NewLiteralContentElement("figcaption", s) + figure.Contents = append(figure.Contents, figcaption) + return figure.Render(), nil } func external(lxs *lexers) (block, *ParseError) { -- cgit v1.2.3