From: Jonas Zeiger Date: Tue, 5 Dec 2023 23:29:03 +0000 (+0100) Subject: markup/goldmark: TOC: render strikethrough, emojis X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=134e7d1d3d1ca901a274c56ef720c9c48be56b77;p=brevno-suite%2Fhugo 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 --- 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", ` - //
  • Some deleted text
  • - // `) + b.AssertFileContent("public/p6/index.html", ` +
  • Some deleted text
  • +`) // emoji - // TODO failing test: Issue #12022 - // b.AssertFileContent("public/p7/index.html", ` - //
  • A 🐍 emoji
  • - // `) + b.AssertFileContent("public/p7/index.html", ` +
  • A 🐍 emoji
  • +`) }