aboutsummaryrefslogtreecommitdiff
path: root/markdown/ast_external.go
diff options
context:
space:
mode:
authorWilliam Hergès <william@herges.fr>2025-10-05 15:59:18 +0200
committerWilliam Hergès <william@herges.fr>2025-10-05 15:59:18 +0200
commitcceb40d0c021981e2aef0f11ab001c955d0dccc9 (patch)
tree9d770eeb1f5543579d8ec60c1ec2fb699f9843ce /markdown/ast_external.go
parentbce210d75a4552c5b144a5760ace4950c198f046 (diff)
fix(markdown): missing space after linebreak and link
Diffstat (limited to 'markdown/ast_external.go')
-rw-r--r--markdown/ast_external.go20
1 files changed, 14 insertions, 6 deletions
diff --git a/markdown/ast_external.go b/markdown/ast_external.go
index e648ad5..ee00eab 100644
--- a/markdown/ast_external.go
+++ b/markdown/ast_external.go
@@ -9,8 +9,9 @@ import (
var externalLink = regexp.MustCompile(`https?://`)
type astLink struct {
- content block
- href block
+ content block
+ href block
+ addSpace bool
}
func (a *astLink) Eval(opt *Option) (template.HTML, *ParseError) {
@@ -22,7 +23,11 @@ func (a *astLink) Eval(opt *Option) (template.HTML, *ParseError) {
if err != nil {
return "", err
}
- return RenderLink(string(content), string(href)), nil
+ rr := RenderLink(string(content), string(href))
+ if a.addSpace {
+ return " " + rr, nil
+ }
+ return rr, nil
}
func RenderLink(content, href string) template.HTML {
@@ -68,22 +73,25 @@ func external(lxs *lexers) (block, *ParseError) {
if !lxs.Next() {
return astLiteral(tp), nil
}
- lxs.Before() // because we call Next
+ lxs.Before() // because we called Next
+ addSpace := lxs.Before() && lxs.Current().Type == lexerBreak
+ lxs.Next() // because we called Before
var b block
var err *ParseError
switch tp {
case "![":
b, err = image(lxs)
case "[":
- b, err = link(lxs)
+ b, err = link(lxs, addSpace)
default:
b = astLiteral(tp)
}
return b, err
}
-func link(lxs *lexers) (block, *ParseError) {
+func link(lxs *lexers, addSpace bool) (block, *ParseError) {
lk := new(astLink)
+ lk.addSpace = addSpace
start := lxs.current
content, href, _, ok := parseExternal(lxs, false)
if !ok {