aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJonas Zeiger <[email protected]>2023-12-06 00:29:03 +0100
committerBjørn Erik Pedersen <[email protected]>2024-03-07 14:08:29 +0100
commit134e7d1d3d1ca901a274c56ef720c9c48be56b77 (patch)
tree7f5a20b3015d5a6b3eb751086c2d82c3c1d07c53
parent1f48b717c7f1bb9ecdbf8a7f50cbcdc5cf1dcc0a (diff)
downloadhugo-134e7d1d3d1ca901a274c56ef720c9c48be56b77.tar.gz
hugo-134e7d1d3d1ca901a274c56ef720c9c48be56b77.zip
markup/goldmark: TOC: render strikethrough, emojis
Configure the TOC (TableOfContents, toc.go) goldmark renderer to always enable the Strikethrough and Emoji extensions. This allows handling ast.KindStrikethrough and ast.KindEmoji AST nodes when rendering the TOC. Fixes #7169 Fixes #11783 Fixes #12022
-rw-r--r--markup/goldmark/convert.go16
-rw-r--r--markup/goldmark/toc.go8
-rw-r--r--markup/goldmark/toc_integration_test.go14
3 files changed, 26 insertions, 12 deletions
diff --git a/markup/goldmark/convert.go b/markup/goldmark/convert.go
index de06bedff..d835d17cf 100644
--- a/markup/goldmark/convert.go
+++ b/markup/goldmark/convert.go
@@ -18,14 +18,14 @@ import (
"bytes"
"github.com/gohugoio/hugo-goldmark-extensions/passthrough"
+ "github.com/yuin/goldmark/util"
+
"github.com/gohugoio/hugo/markup/goldmark/codeblocks"
"github.com/gohugoio/hugo/markup/goldmark/goldmark_config"
"github.com/gohugoio/hugo/markup/goldmark/images"
"github.com/gohugoio/hugo/markup/goldmark/internal/extensions/attributes"
"github.com/gohugoio/hugo/markup/goldmark/internal/render"
- "github.com/gohugoio/hugo/markup/converter"
- "github.com/gohugoio/hugo/markup/tableofcontents"
"github.com/yuin/goldmark"
emoji "github.com/yuin/goldmark-emoji"
"github.com/yuin/goldmark/ast"
@@ -34,6 +34,9 @@ import (
"github.com/yuin/goldmark/renderer"
"github.com/yuin/goldmark/renderer/html"
"github.com/yuin/goldmark/text"
+
+ "github.com/gohugoio/hugo/markup/converter"
+ "github.com/gohugoio/hugo/markup/tableofcontents"
)
const (
@@ -91,10 +94,17 @@ func newMarkdown(pcfg converter.ProviderConfig) goldmark.Markdown {
rendererOptions = append(rendererOptions, html.WithUnsafe())
}
+ tocRendererOptions := make([]renderer.Option, len(rendererOptions))
+ if rendererOptions != nil {
+ copy(tocRendererOptions, rendererOptions)
+ }
+ tocRendererOptions = append(tocRendererOptions,
+ renderer.WithNodeRenderers(util.Prioritized(extension.NewStrikethroughHTMLRenderer(), 500)),
+ renderer.WithNodeRenderers(util.Prioritized(emoji.NewHTMLRenderer(), 200)))
var (
extensions = []goldmark.Extender{
newLinks(cfg),
- newTocExtension(rendererOptions),
+ newTocExtension(tocRendererOptions),
}
parserOptions []parser.Option
)
diff --git a/markup/goldmark/toc.go b/markup/goldmark/toc.go
index bc209adf2..b0f7e703f 100644
--- a/markup/goldmark/toc.go
+++ b/markup/goldmark/toc.go
@@ -16,6 +16,10 @@ package goldmark
import (
"bytes"
+ strikethroughAst "github.com/yuin/goldmark/extension/ast"
+
+ emojiAst "github.com/yuin/goldmark-emoji/ast"
+
"github.com/gohugoio/hugo/markup/tableofcontents"
"github.com/yuin/goldmark"
@@ -86,7 +90,9 @@ func (t *tocTransformer) Transform(n *ast.Document, reader text.Reader, pc parse
ast.KindCodeSpan,
ast.KindLink,
ast.KindImage,
- ast.KindEmphasis:
+ ast.KindEmphasis,
+ strikethroughAst.KindStrikethrough,
+ emojiAst.KindEmoji:
err := t.r.Render(&headingText, reader.Source(), n)
if err != nil {
return s, err
diff --git a/markup/goldmark/toc_integration_test.go b/markup/goldmark/toc_integration_test.go
index f58f91f1c..3b48dac6c 100644
--- a/markup/goldmark/toc_integration_test.go
+++ b/markup/goldmark/toc_integration_test.go
@@ -253,14 +253,12 @@ title: p7 (emoji)
`)
// strikethrough
- // TODO failing test: Issue #8087
- // b.AssertFileContent("public/p6/index.html", `
- // <li><a href="#ome-deleted-text">Some <del>deleted</del> text</a></li>
- // `)
+ b.AssertFileContent("public/p6/index.html", `
+<li><a href="#some-deleted-text">Some <del>deleted</del> text</a></li>
+`)
// emoji
- // TODO failing test: Issue #12022
- // b.AssertFileContent("public/p7/index.html", `
- // <li><a href="#a-snake-emoji">A &#x1f40d; emoji</a></li>
- // `)
+ b.AssertFileContent("public/p7/index.html", `
+<li><a href="#a-snake-emoji">A &#x1f40d; emoji</a></li>
+`)
}