summaryrefslogtreecommitdiffstats
path: root/markup
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2019-12-19 17:43:07 +0100
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2019-12-19 19:02:03 +0100
commita67d95fe1a033ca4934957b5a98b12ecc8a9edbd (patch)
tree093f017a698e74adfc3acdd68c3feb1c2d146adc /markup
parentad6504e6b504277bbc7b60d093cdccd4f3baaa4f (diff)
Preserve HTML Text for image render hooks
Fixes #6639
Diffstat (limited to 'markup')
-rw-r--r--markup/goldmark/render_link.go15
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
}