diff options
| author | 2025-10-17 01:16:18 +0700 | |
|---|---|---|
| committer | 2025-10-17 01:16:18 +0700 | |
| commit | db174993127a8b2faf863a670fd6ce8ca8d7c1af (patch) | |
| tree | 25d6b5763bcce6144e84383cb09c82d4c05f57fa /internal/tailwind/link_renderer.go | |
| parent | 44fe2478478225450becb77ad5d273462c9b400a (diff) | |
| download | web-db174993127a8b2faf863a670fd6ce8ca8d7c1af.tar.gz web-db174993127a8b2faf863a670fd6ce8ca8d7c1af.zip | |
feat: add onclick links in blog post links
feat: add href for any onclick links/icons
chore: rm any remains of old lightgallery
fix: show borders between post rows
fix: map redefining
Diffstat (limited to 'internal/tailwind/link_renderer.go')
| -rw-r--r-- | internal/tailwind/link_renderer.go | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/internal/tailwind/link_renderer.go b/internal/tailwind/link_renderer.go new file mode 100644 index 0000000..ff3d437 --- /dev/null +++ b/internal/tailwind/link_renderer.go @@ -0,0 +1,49 @@ +package tailwind + +import ( + "github.com/yuin/goldmark/ast" + "github.com/yuin/goldmark/renderer" + "github.com/yuin/goldmark/renderer/html" + "github.com/yuin/goldmark/util" +) + +type CustomLinkRenderer struct { + html.Config +} + +func NewCustomLinkRenderer(opts ...html.Option) renderer.NodeRenderer { + r := &CustomLinkRenderer{ + Config: html.NewConfig(), + } + for _, opt := range opts { + opt.SetHTMLOption(&r.Config) + } + return r +} + +func (r *CustomLinkRenderer) renderLink(w util.BufWriter, source []byte, node ast.Node, entering bool) (ast.WalkStatus, error) { + n := node.(*ast.Link) + if entering { + _, _ = w.WriteString("<a href=\"") + if r.Unsafe || !html.IsDangerousURL(n.Destination) { + _, _ = w.Write(util.EscapeHTML(util.URLEscape(n.Destination, true))) + } + _, _ = w.WriteString(`"`) + if n.Title != nil { + _, _ = w.WriteString(` title="`) + _, _ = w.Write(util.EscapeHTML(n.Title)) + _, _ = w.WriteString(`"`) + } + if n.Attributes() != nil { + html.RenderAttributes(w, n, nil) + } + _, _ = w.WriteString(">") + } else { + _, _ = w.WriteString("</a>") + } + return ast.WalkContinue, nil +} + +func (r *CustomLinkRenderer) RegisterFuncs(reg renderer.NodeRendererFuncRegisterer) { + reg.Register(ast.KindLink, r.renderLink) +} |