diff --git a/go.mod b/go.mod index b98be5e92..38de3cb65 100644 --- a/go.mod +++ b/go.mod @@ -38,7 +38,7 @@ require ( github.com/gohugoio/go-i18n/v2 v2.1.3-0.20230805085216-e63c13218d0e github.com/gohugoio/hashstructure v0.5.0 github.com/gohugoio/httpcache v0.7.0 - github.com/gohugoio/hugo-goldmark-extensions/extras v0.3.0 + github.com/gohugoio/hugo-goldmark-extensions/extras v0.5.0 github.com/gohugoio/hugo-goldmark-extensions/passthrough v0.3.1 github.com/gohugoio/locales v0.14.0 github.com/gohugoio/localescompressed v1.0.1 diff --git a/go.sum b/go.sum index db8d08beb..6b87e6ddb 100644 --- a/go.sum +++ b/go.sum @@ -261,8 +261,8 @@ github.com/gohugoio/hashstructure v0.5.0 h1:G2fjSBU36RdwEJBWJ+919ERvOVqAg9tfcYp4 github.com/gohugoio/hashstructure v0.5.0/go.mod h1:Ser0TniXuu/eauYmrwM4o64EBvySxNzITEOLlm4igec= github.com/gohugoio/httpcache v0.7.0 h1:ukPnn04Rgvx48JIinZvZetBfHaWE7I01JR2Q2RrQ3Vs= github.com/gohugoio/httpcache v0.7.0/go.mod h1:fMlPrdY/vVJhAriLZnrF5QpN3BNAcoBClgAyQd+lGFI= -github.com/gohugoio/hugo-goldmark-extensions/extras v0.3.0 h1:gj49kTR5Z4Hnm0ZaQrgPVazL3DUkppw+x6XhHCmh+Wk= -github.com/gohugoio/hugo-goldmark-extensions/extras v0.3.0/go.mod h1:IMMj7xiUbLt1YNJ6m7AM4cnsX4cFnnfkleO/lBHGzUg= +github.com/gohugoio/hugo-goldmark-extensions/extras v0.5.0 h1:dco+7YiOryRoPOMXwwaf+kktZSCtlFtreNdiJbETvYE= +github.com/gohugoio/hugo-goldmark-extensions/extras v0.5.0/go.mod h1:CRrxQTKeM3imw+UoS4EHKyrqB7Zp6sAJiqHit+aMGTE= github.com/gohugoio/hugo-goldmark-extensions/passthrough v0.3.1 h1:nUzXfRTszLliZuN0JTKeunXTRaiFX6ksaWP0puLLYAY= github.com/gohugoio/hugo-goldmark-extensions/passthrough v0.3.1/go.mod h1:Wy8ThAA8p2/w1DY05vEzq6EIeI2mzDjvHsu7ULBVwog= github.com/gohugoio/locales v0.14.0 h1:Q0gpsZwfv7ATHMbcTNepFd59H7GoykzWJIxi113XGDc= diff --git a/markup/goldmark/convert.go b/markup/goldmark/convert.go index ceacd150e..fb374e6ae 100644 --- a/markup/goldmark/convert.go +++ b/markup/goldmark/convert.go @@ -102,9 +102,26 @@ func newMarkdown(pcfg converter.ProviderConfig) goldmark.Markdown { if rendererOptions != nil { copy(tocRendererOptions, rendererOptions) } + tocRendererOptions = append(tocRendererOptions, renderer.WithNodeRenderers(util.Prioritized(extension.NewStrikethroughHTMLRenderer(), 500)), - renderer.WithNodeRenderers(util.Prioritized(emoji.NewHTMLRenderer(), 200))) + renderer.WithNodeRenderers(util.Prioritized(emoji.NewHTMLRenderer(), 200)), + ) + + inlineTags := []extras.InlineTag{ + extras.DeleteTag, + extras.InsertTag, + extras.MarkTag, + extras.SubscriptTag, + extras.SuperscriptTag, + } + + for _, tag := range inlineTags { + tocRendererOptions = append(tocRendererOptions, + renderer.WithNodeRenderers(util.Prioritized(extras.NewInlineTagHTMLRenderer(tag), tag.RenderPriority)), + ) + } + var ( extensions = []goldmark.Extender{ hugocontext.New(pcfg.Logger), diff --git a/markup/goldmark/toc.go b/markup/goldmark/toc.go index b4dcc425f..3fb53f875 100644 --- a/markup/goldmark/toc.go +++ b/markup/goldmark/toc.go @@ -23,6 +23,7 @@ import ( emojiAst "github.com/yuin/goldmark-emoji/ast" + "github.com/gohugoio/hugo-goldmark-extensions/extras" "github.com/gohugoio/hugo/markup/tableofcontents" "github.com/yuin/goldmark" @@ -99,7 +100,12 @@ func (t *tocTransformer) Transform(n *ast.Document, reader text.Reader, pc parse ast.KindImage, ast.KindEmphasis, strikethroughAst.KindStrikethrough, - emojiAst.KindEmoji: + emojiAst.KindEmoji, + extras.KindDelete, + extras.KindInsert, + extras.KindMark, + extras.KindSubscript, + extras.KindSuperscript: 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 b4dfeee05..aaaf41a2f 100644 --- a/markup/goldmark/toc_integration_test.go +++ b/markup/goldmark/toc_integration_test.go @@ -14,6 +14,7 @@ package goldmark_test import ( + "strings" "testing" "github.com/gohugoio/hugo/hugolib" @@ -303,3 +304,63 @@ title: home b.AssertFileExists("public/index.html", true) } + +// Issue 12605 +func TestTableOfContentsWithGoldmarkExtras(t *testing.T) { + t.Parallel() + + files := ` +-- hugo.toml -- +disableKinds = ['page','rss','section','sitemap','taxonomy','term'] +[markup.goldmark.extensions] +strikethrough = false +[markup.goldmark.extensions.extras.delete] +enable = true +[markup.goldmark.extensions.extras.insert] +enable = true +[markup.goldmark.extensions.extras.mark] +enable = true +[markup.goldmark.extensions.extras.subscript] +enable = true +[markup.goldmark.extensions.extras.superscript] +enable = true + +-- content/_index.md -- +--- +title: home +--- +## ~~deleted~~ + +## ++inserted++ + +## ==marked== + +## H~2~O + +## 1^st^ +-- layouts/home.html -- +{{ .TableOfContents }} +` + + b := hugolib.Test(t, files) + + b.AssertFileContent("public/index.html", + `