Skip to content

Commit

Permalink
markup/goldmark: TOC: render strikethrough, emojis
Browse files Browse the repository at this point in the history
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
  • Loading branch information
lyind authored and bep committed Mar 7, 2024
1 parent 1f48b71 commit 134e7d1
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 12 deletions.
16 changes: 13 additions & 3 deletions markup/goldmark/convert.go
Expand Up @@ -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"
Expand All @@ -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 (
Expand Down Expand Up @@ -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
)
Expand Down
8 changes: 7 additions & 1 deletion markup/goldmark/toc.go
Expand Up @@ -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"
Expand Down Expand Up @@ -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
Expand Down
14 changes: 6 additions & 8 deletions markup/goldmark/toc_integration_test.go
Expand Up @@ -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>
`)
}

0 comments on commit 134e7d1

Please sign in to comment.