diff options
author | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2019-12-19 17:43:07 +0100 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2019-12-19 19:02:03 +0100 |
commit | a67d95fe1a033ca4934957b5a98b12ecc8a9edbd (patch) | |
tree | 093f017a698e74adfc3acdd68c3feb1c2d146adc /markup | |
parent | ad6504e6b504277bbc7b60d093cdccd4f3baaa4f (diff) |
Preserve HTML Text for image render hooks
Fixes #6639
Diffstat (limited to 'markup')
-rw-r--r-- | markup/goldmark/render_link.go | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/markup/goldmark/render_link.go b/markup/goldmark/render_link.go index cefb786a6..c0269bedf 100644 --- a/markup/goldmark/render_link.go +++ b/markup/goldmark/render_link.go @@ -137,7 +137,7 @@ func (r *linkRenderer) renderImage(w util.BufWriter, source []byte, node ast.Nod n := node.(*ast.Image) var h *hooks.Render - ctx, ok := w.(renderContextData) + ctx, ok := w.(*renderContext) if ok { h = ctx.RenderContext().RenderHooks ok = h != nil && h.ImageRenderer != nil @@ -147,11 +147,14 @@ func (r *linkRenderer) renderImage(w util.BufWriter, source []byte, node ast.Nod return r.renderDefaultImage(w, source, node, entering) } - if !entering { + if entering { + // Store the current pos so we can capture the rendered text. + ctx.pos = ctx.Buffer.Len() return ast.WalkContinue, nil } - text := string(n.Text(source)) + text := ctx.Buffer.Bytes()[ctx.pos:] + ctx.Buffer.Truncate(ctx.pos) err := h.ImageRenderer.Render( w, @@ -159,14 +162,14 @@ func (r *linkRenderer) renderImage(w util.BufWriter, source []byte, node ast.Nod page: ctx.DocumentContext().Document, destination: string(n.Destination), title: string(n.Title), - text: text, - plainText: text, + text: string(text), + plainText: string(n.Text(source)), }, ) ctx.AddIdentity(h.ImageRenderer.GetIdentity()) - return ast.WalkSkipChildren, err + return ast.WalkContinue, err } |